我的情況是我有四個表病人,收據,診所和實驗室。SQL Server 2005中的關係?
CREATE DATABASE TestHosp
GO
USE TestHosp
GO
有關病人信息
CREATE TABLE Patient
(Id INT Not NULL PRIMARY KEY IDENTITY(1,1),
FirestName VARCHAR(12) NOT NULL,
LastName VARCHAR(12) NOT NULL,
Birthday DATETIME)
CREATE TABLE Clinic
(Id INT NOT NULL PRIMARY KEY IDENTITY(1,1),
ClinicName VARCHAR(20) UNIQUE,
Price DECIMAL(8,2))
CREATE TABLE Laboratory
(Id INT NOT NULL PRIMARY KEY IDENTITY(1,1),
LaboratoryName VARCHAR(20) UNIQUE,
Price DECIMAL (8,2))
注意,收到包含收據號碼,一個收據屬於一個實驗室,一個收據屬於一個診所,我想離不開建立兩個列FK_Laboratory_ID和FK_Clinic_ID關係 和一個號碼爲所有收據以任何方式做到這一點。
CREATE TABLE Receipt
(Id INT NOT NULL PRIMARY KEY IDENTITY(1,1),
PatientID INT NOT NULL
CONSTRAINT [FK_Patient_ID] FOREIGN KEY (PatientID) REFERENCES Patient(Id),
DATE DATETIME,
Paid DECIMAL(8,2))
您可以編輯您的問題,使其更具可讀性嗎? – Rahul 2010-08-31 06:40:32
價格在診所和實驗室沒有意義。最終會出現multipel價格,這是真實的數據,不應該存儲在診所或實驗室中。 並修復您的名字字段中的錯字或它會惹惱你多年。 – HLGEM 2010-08-31 13:58:04
OH和ID是ID字段的可怕名稱。當你進入複雜的連接並報告你將使用這種類型的數據時,使用起來會很痛苦(當你不需要使用適當的命名約定時,你將會在整個過程中進行混淆。ID應該命名爲tablenameID,並且FK應儘可能與PK具有相同的名稱。 – HLGEM 2010-08-31 14:00:25