我正在尝试基于从非数据库系统导入的平面文件创建小型数据库。导入工作,数据库是好的,但我添加了一个新的表,其中包含来自另一个系统的数据。我试图创建表之间的关系,但因为一个表有重复的行(平面文件是源),我无法设置该关系。 示例:表1列出了由医生为患者完成的所有程序。患者可以在同一天由相同的医生进行许多相同的程序(因此是重复的行)...表2列出了医生列表和他们的ID号......我想根据医师的名字建立两张表之间的关系,但由于非唯一的数据,我收到了错误。 任何人有小费? 感谢SQL数据库表关系
1
A
回答
0
病人可以有很多的由同一医生在同一天同一个程序(因此重复行)
通常情况下,你应该能够从设置一个外键关系Table1到Table2甚至在存在重复行的情况下。这种错误通常意味着你试图将外键设置在错误的表中。
-- Your "Table2"
create table physicians (
physician_id integer primary key,
physician_name varchar(35) not null -- names are not unique
);
insert into physicians values
(1, 'Doctor Who'), (2, 'Dr. Watson');
create table patients (
patient_id integer primary key,
patient_name varchar(35) not null -- names are not unique
);
insert into patients values
(100, 'Melville, Herman'), (101, 'Poe, Edgar Allen');
-- Your "Table1"
-- Allows multiple physicians per date.
create table patient_procedures(
patient_id integer not null references patients (patient_id),
physician_id integer not null references physicians(physician_id),
procedure_date date not null default current_date,
procedure_name varchar(15) not null,
primary key (patient_id, physician_id, procedure_date, procedure_name)
);
insert into patient_procedures values
(100, 1, '2012-01-02', 'CBC'),
(100, 1, '2012-01-02', 'Thyroid panel');
0
我不知道从您的描述重复数据问题。您有:
- 表1:程序。可能是同一医生的很多行
- 表2:医生。应该是每个医生1行(但可能有重复)
有意义的关系将是1 [表2医师行] - >许多[表1程序行]。即表2将成为关系中的主键表:每个表2行涉及0与“许多”表1行之间的关系。如果您尝试创建这种关系,那么多个重复的表格1行不成问题。
但是,如果你在表2每位医生多行,那么你将无法建立这种关系,因为表2行是不是唯一的,因此不能作为主键元素在关系中。然后问题是数据清理之一:确定表2中的哪些行是重复的,将表1行更新为仅指向一位医师,然后删除表2中的重复行。
你提到医师ID和医生的名字。医生的名字对于一个独特的钥匙来说是一个不好的选择;如果用户试图添加一个名为“约翰·史密斯”新医生时,已经有该名称的其他医生,要么
- 你已经设置了对PhysicianName唯一索引,其变动被拒绝,你有愤怒的用户;或
- 你还没有,并且所有现有的医生(我们称他为John A. Smith)的程序将与其他医生(我们称他为John B. Smith)相关联,反之亦然。
该关系应该使用医师ID进行设置。如果表1(程序)包含医师ID列,那么您很幸运。如果它只包含医生姓名,那么如果表2中已经有重复的医师姓名,则可能会有数据清理问题。
相关问题
- 1. SQL数据库表关系?
- 2. SQL Server数据库表关系
- 3. SQL Server中的数据库表关系
- 4. SQL数据库关系
- 5. SQL SEARCHING关系数据库
- 6. 关系在SQL数据库
- 7. Asp.net数据库表关系
- 8. 关系数据库表
- 9. 数据库关系表
- 10. 数据库表关系
- 11. MySQL数据库表关系
- 12. 数据库关系代数,SQL查询
- 13. SQL数据库递归关系
- 14. SQL Server数据库关系图练习
- 15. SQL Azure支持关系数据库吗?
- 16. SQL关系数据库 - 在一个表的表名
- 17. 数据库关系
- 18. 数据库关系
- 19. 数据库关系
- 20. 关系数据库
- 21. SQL:数据库中n到m的关系,中间有关系
- 22. 隐藏来自SQL Server数据库关系图的关系
- 23. MySql |关系数据库vs非关系数据库的性能
- 24. 关系数据库或NoSQL数据库
- 25. 数据库结构关系数据库
- 26. 对象数据库关系数据库
- 27. 关系数据库一对多关系
- 28. 关系数据库中的关系“OR”
- 29. 指数数据库关系
- 30. 创建关系数据库表