0

会員管理用のデータベースを作成しています。要素 (ユーザー) があり、これらのユーザーにはプロパティ (姓、名、生年月日など) があります。今、名前はテキストですが、生年月日は日付なので、これをデータ型「日付」の列に格納したいと思います。ユーザーのプロパティは異なる場合があるため、要素を含むテーブル、プロパティを含むテーブル、および 2 つをリンクするテーブルが必要です。ただし、さまざまな種類のデータ型を使用できるようにするには、データ型ごとに異なるテーブルを作成する必要があります。次のようなものが得られます。

Table: Users
------------
user
1
2

table: properties
---------------------------------
property  propertyName   datatype
1         surname        text
2         lastname       text
3         date of birth  date

Table: PropertiesString
---------------------------
property   value
1          John
2          Tim
3          Smith
4          Jones

Table: PropertiesDate
-------------------------
property   value
1          04-11-1966
2          07-08-1971

table: userPropertiesLinked
-----------------------------
user   property propertyValue
1      1        1
1      2        3
2      1        2
2      2        4
2      3        1
1      3        2

これをまとめると、John Smith (04-11-1966) と Tim Jones (07-08-1971) の 2 人のユーザーがいることがわかります。

私の質問は、これが最善の方法ですか? この DB のセットアップ方法は非常に検索しやすく、人々は複数のプロパティを持つことができ、プロパティは 2 回保存されないなどです。私が直面している問題は、1 つのテーブルの「プロパティ」1 がジョンであり、その他 1966 年 4 月 11 日。これらの値が異なるテーブルにある場合でも、これらの値を一意にして自動インクリメントする方法はありますか? 二重の情報や空のセルを危険にさらすことなく、それらを 1 つのテーブルに配置する方法はありますか?

どんな助けでも大歓迎です!

4

1 に答える 1

0

次のように、外部キーを 2 つのテーブルに接続するが、値は同じであると考えることができると思います。

constraint PropertiesString_fk foreign key (value) references  PropertiesDate(or other table) value.

自動インクリメントに関しては、次のように考えることができます。

ALTER TABLE tablename DROP id;
ALTER TABLE tablename ADD id INT NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST  

それらを1つのテーブルにまとめる方法として、コマンド「select」と「distinct」を使用できます

于 2013-01-06T16:59:28.550 に答える