我正在嘗試基於從非數據庫系統導入的平面文件創建小型數據庫。導入工作,數據庫是好的,但我添加了一個新的表,其中包含來自另一個系統的數據。我試圖創建表之間的關係,但因爲一個表有重複的行(平面文件是源),我無法設置該關係。 示例:表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. 創建關係數據庫表