我的情况是我有四个表病人,收据,诊所和实验室。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