首先,對不起,如果這可能是一個愚蠢的問題。我很新的MySQL的世界,所以...我應該如何構建我的MySQL數據庫?
無論如何,我的問題是這樣的:我打算有一個數據庫,處理(現在)兩種類型的用戶,比方說管理員和用戶。我的目標是擁有一個包含所有用戶的表格,這些用戶名稱恰當地稱爲「用戶」。下面是我的MySQL命令的一個粗略的輪廓(我還沒有測試過這樣的錯誤很可能):
CREATE TABLE users {
user_id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_type int NOT NULL REFERENCES user_types(user_type_id),
ssn char(10) NOT NULL,
password varchar(40) NOT NULL,
first_name varchar(30) NOT NULL,
last_name varchar(30) NOT NULL,
address varchar(80) NOT NULL
} engine = InnoDB;
上面的「USER_TYPE」列將參閱「user_types」另一個表,其中列出了不同用戶類型的網站(我對具有在以後添加更多的用戶類型選項的緣故這樣做):
CREATE TABLE user_types {
user_type_id int UNSIGNED NOT NULL PRIMARY KEY,
user_type_desc varchar(10) NOT NULL
} engine = InnoDB;
INSERT INTO user_types (user_type_id, user_type_desc) VALUES(1,'Admin'),(2,'User');
我的目標是用「管理員」鏈接「用戶」;一個「用戶」(孩子)可以有一個「管理員」(父母),但一個「管理員」(父母)可以有幾個「用戶」關聯(子女)。我的目標是創建一個簡單的約會日曆,爲此我需要將用戶與他們的管理員(一對一關係,因爲約會在一個用戶和一個管理員之間)連接。現在的問題是:
1)是否有可能通過爲所有用戶創建一個表來實現這一目標?如果是這樣,我該如何做到這一點?現在我正在考慮創建一個名爲「賦值」的表格:
CREATE TABLE assignments {
assign_id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
patient_id int NOT NULL REFERENCES users(user_id),
doctor_id int NOT NULL REFERENCES users(user_id)
} engine = InnoDB;
但上面的代碼看起來很奇怪,我可以做那種連接到同一張桌子的外鍵沒有任何危險嗎?下面也是SQL「代碼」爲「約會」表:
CREATE TABLE appointments {
appointment_id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
assign_id int FOREIGN KEY REFERENCES assignments(assign_id),
date_time datetime NOT NULL,
description varchar(200) NOT NULL
};
也就是說,「管理」和「用戶」之間的「約會」表指向每個條目一定的分配。
2)我怎樣才能以簡單的方式,或更確切地說,實現「管理員」和「用戶」之間的一對多關係?
任何幫助或建議將不勝感激,並抱歉,如果這些問題是愚蠢的!
非常感謝,你的回答和解釋是明確的幫助! – BeeDog 2010-10-28 08:41:50