Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Come gestire autori in db per libreria

    sto mettendo su un piccolo db per una libreria.
    ho fatto tre tabelle:
    -un per i libri con due FK, una per gli autori e una per gli editori
    -una tabella per gli editoi
    -una per gli autori

    il problema è che un libro può essere scritto da tanti autori.
    com'è meglio gestire i vari autori??

  2. #2
    si fa con una terza tabella di link

    id_libro
    id_autore

    poi togli l'informazione relativa all'autore dalla tabella dei libri. quando dovrai mostrare le info complete, andrai di join


  3. #3
    Originariamente inviato da optime
    si fa con una terza tabella di link

    id_libro
    id_autore

    poi togli l'informazione relativa all'autore dalla tabella dei libri. quando dovrai mostrare le info complete, andrai di join

    ma id_libro e id_autore sono semplici campi int o sono anche FK delle rispettive tabelle (book e author)??

  4. #4
    Originariamente inviato da fermat
    ma id_libro e id_autore sono semplici campi int o sono anche FK delle rispettive tabelle (book e author)??
    dai, che domande...

  5. #5
    te lo chiedo perchè ho creato la tabella.
    poi ho aggiunto una fk che collega il campo book_id al campo omonimo della tabella book.
    poi sto provando a collegare auhtor_id al campo author_id della tabella author:
    codice:
    ALTER TABLE `library`.`link` ADD CONSTRAINT `author_id` FOREIGN KEY (`author_id`) REFERENCES `library`.`author` (`author_id`)   ON UPDATE CASCADE ON DELETE CASCADE;
    ma continua a uscire sto messaggio:
    Can't create table 'library.#sql-c79_21c' (errno: 121)

    quindi cercavo di capire se sbagliavo approccio o altro.

  6. #6
    che db stai usando? (avresti già dovuto indicarlo nel titolo, come da regolamento...)

  7. #7
    mysql.....
    nn ci ho pensato a metterlo perchè intendevo fare una domanda generale, indipendente dal db.
    cmq il problema l'ho risolto cambiando nome alla FK.
    probabilmente andava in conflitto con la FK della libreria book.

    grazie!

  8. #8
    ecco quello che nn capisco bene come gestire.
    questa è la tabella book:
    codice:
    +-----------+--------------+------+-----+---------+-------+
    | Field     | Type         | Null | Key | Default | Extra |
    +-----------+--------------+------+-----+---------+-------+
    | book_id   | int(11)      | NO   | PRI | NULL    |       |
    | title     | varchar(100) | NO   | MUL | NULL    |       |
    | isbn      | varchar(50)  | YES  |     | NULL    |       |
    | price     | double       | YES  |     | NULL    |       |
    | note      | text         | YES  |     | NULL    |       |
    +-----------+--------------+------+-----+---------+-------+
    6 rows in set (0.01 sec)
    questa è la tabella link:
    codice:
    +-----------+---------+------+-----+---------+-------+
    | Field     | Type    | Null | Key | Default | Extra |
    +-----------+---------+------+-----+---------+-------+
    | book_id   | int(11) | NO   | MUL | NULL    |       |
    | author_id | int(11) | NO   | MUL | NULL    |       |
    +-----------+---------+------+-----+---------+-------+
    2 rows in set (0.01 sec)
    nella tabella autori ho aggiunto tre autori che hanno scritto un libro.
    adesso quando vado ad inserire quel libro devo anche dirgli che gli autori sono quei tre.
    come faccio??

  9. #9
    nella tabella di link farai tre inserimenti

    book_id = libro x
    author_id = primo autore

    book_id = libro x
    author_id = secondo autore

    book_id = libro x
    author_id = terzo autore


  10. #10
    ho ragionato un pò sulla questione.
    magari sto per dire sciocchezza, ma questo sistema non è tutte rose e fiori.
    prendiamo in esempio una semplice pagina web che contiene un form per l'inserimento dei libri.
    per scegliere l'autore nn si potrebbe usare il classico menu a tendina in quanto nn si sanno a priori quanti autori hanno scritto un libro.
    ho un libro a casa con 8 autori differenti ad esempio.
    quindi anche l'autore dovrebbe essere una textbox nella quale l'utente dovrebbe inserire l'autore scrivendolo.
    a questo punto ci sarebbero parecchi inserimenti contemporaneamente:
    -l'insert per i libri
    -i 3 insert nella tabella link
    -l'insert nella tabella autori usando la clausola ON DUPLICATE KEY UPDATE per evitare che ci siano ripetizioni

    nn diventa un pò pesante la query??
    e magari anche scomodo visto che c'è sepre la possibilità di errore di battitura e c'è il rischio di avere parecchi autori simili??

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.