2011-01-31, 22:18
#13
Citat:
Tack för bra input!
Ursprungligen postat av NilsNilsson321
Jag gillar inte att du har prefix på varje attribut, blir onödigt att hämta bookName FROM books exempelvis tycker jag. Och krockar kan undvikas genom att skriva "books.name". Annat jag tänkte på är att du har antagit 1-1 förhållande mellan flera saker som inte behöver vara detta. Tänker framförallt på: bookWriter, bookTranslator, bookDesigner. Som det är nu blir det redundans också, om två böcker med samma författare skall läggas in. Onödigt att dela upp datum också, bookYear, bookMonth och bookDay bör ersättas med ett attribut "published" eller "bookPublished" exempelvis.
Mitt förslag:
books(id, publisher_id, isbn10, isbn13, name, price, language, published, pages);
authors(id, firstname, surname);
translators(id, firstname, surname);
designers(id, firstname, surname);
books_authors(book_id, author_id);
books_designers(book_id, author_id);
books_translators(book_id, author_id);
publishers(id, name, country);
Mitt förslag:
books(id, publisher_id, isbn10, isbn13, name, price, language, published, pages);
authors(id, firstname, surname);
translators(id, firstname, surname);
designers(id, firstname, surname);
books_authors(book_id, author_id);
books_designers(book_id, author_id);
books_translators(book_id, author_id);
publishers(id, name, country);
Ja, att vi ska ha så mycket tabeller som möjligt för att inte låsa upp sig i databasdesignen är bra. Jag har ju inte tänkt på allt och här är meningen att vi ska komma fram till en optimal lösning innan vi börjar jobba på det.
Jag har själv alltid jobbat med tabellprefix för fältnamnen, men det är självfallet något jag kan frångå om majoriteten tycker att det är bättre utan prefix.
Å andra sidan, ang. publiceringsdatum så tycker jag att det kan vara flexibelt, precis som jonthe12 instämde, att dela upp det i year, month, day. Å andra sidan klarar väl SQL av BETWEEN mellan två datum, så länge fältet man jämför med är ett äkta och korrekt formaterat date-fält?