0

我正在爲成員管理員創建一個數據庫。我們有元素(用戶),這些用戶具有屬性(例如,姓氏,姓氏,出生日期)。現在,名稱是文本,但出生日期是日期,所以我想將它存儲在數據類型爲「date」的列中。因爲用戶的屬性可能會有所不同,所以我想要一個包含元素的表格,一個包含屬性的表格和一個將這兩個元素鏈接在一起的表格。但是,爲了能夠使用不同類型的數據類型,對於每種數據類型,我都必須創建一個不同的表。你會得到這樣的事情:在mysql中爲不同類型的數據類型使用不同的表格

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 

這,放在一起,告訴我們,我們有2個用戶,約翰·史密斯(1966年4月11日)和蒂姆·瓊斯(1971年7月8日)。

我的問題是:這是最好的方式去呢?這個數據庫設置的方式非常友好,人們可以擁有多個屬性,屬性不會被存儲兩次等等。我遇到的問題是,一個表中的「屬性」1是約翰,而在其他04-11-1966。有沒有辦法使這些值獨一無二,並自動增量,即使它們在不同的表中?有沒有辦法將它們放在一張桌子上,而不會冒着雙重信息或空單元的風險?

任何幫助將不勝感激!

+0

你以前做過這個嗎?如果沒有,請閱讀外鍵。 – DanMan

回答

0

我覺得你可以考慮外鍵有兩個tabls但相同的值連接起來,就像這樣:

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 

至於如何把它們放到一個表中,你可以使用命令「select」和「distinct」