2012-01-05 5 views
0

私は、ユーザーがリストを作成できるデータベースを設計しています。 (私にとって)難しい部分は、すべてのユーザーが同じタイトルのリストを作成し、同様のアイテムを表示できるということです。データベース設計の欠陥?

User- 
ID/ 
name/ 
email 

Title- 
ID/ 
name/ 
date/ 
userID [FK] 

List- 
ID/ 
userID [FK]/ 
titleID [FK]/ 
text 

と私は、リストの情報を取得するためには、そのタイトルのために彼らの特定のリスト(テキスト)を取得するためにtitle IDuser IDを照会することだったと考えることができる最高の方法:私のソリューションは、これは3つのテーブルを作成することでした。今すぐ子の行を追加したり更新したりすることができなかったため、titleIDをFKとして追加することはできません。質問をすると、リストを取得するのが簡単になるように設定する方がいいですか?

+0

同じタイトルを持つことができると言うと、確率はどのくらいですか?それが非常に一般的な場合は、タイトルのための別のテーブルは間違いなく冗長性を助けるでしょう。 –

+0

本当に 'Title'テーブルが必要ですか?なぜ、 'listID、userID [FK]、title、...'で 'User'と' List'を持たないのでしょうか? –

+0

はい、私はタイトルテーブルを持っているので、それは非常に高い発生することになります。またユーザは複数のリストを持ちます –

答えて

2

「タイトル」は非常に曖昧なエンティティ名です。 User、List、ListItemsをお勧めします。また、PK-fieldsをUserID、ListIDに変更することを検討してください。 SQL文をより読みやすくします。

「今は、子の行を追加または更新できないため、タイトルIDをFKとして追加することはできません」と言っているのですが、それはdbの叫び声ですか、アプリケーションですか? MSアクセスまたはそれに類するもの

+0

はい私はphpmyadminを使用しています –

関連する問題