Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chèn khóa ngoại có nhiều giá trị

Thật không may, bạn vừa hỏi câu hỏi tuổi già;

Tất nhiên, câu trả lời là bạn không; bạn có hai cột. Để mở rộng ví dụ về nhân viên của bạn, bảng nhân viên của bạn sẽ trở thành:

create table employees (
   id number
 , name varchar2(4000)
 , skill_1 number
 , skill_2 number
 , constraint employee_pk primary key (id)
 , constraint employee_skill_1_fs 
      foreign key ( skill_1 ) 
   references skills(skillid)
 , constraint employee_skill_2_fs 
      foreign key ( skill_2 ) 
   references skills(skillid) 
   );

Như bạn có thể thấy, đây không phải là một việc đặc biệt tốt để làm và phá vỡ quá trình bình thường hóa; Điều gì sẽ xảy ra nếu bạn muốn nhân viên của mình (hoặc tất nhiên là nhân viên của bạn muốn) có 3 kỹ năng? Hay 10 ?.

Có lẽ sẽ tốt hơn nếu tạo một bảng thứ ba và thực hiện tất cả các phép nối của bạn bằng một khóa chính và khóa ngoại; vì vậy bạn sẽ có

employees ( employee_id, ..., pk employee_id);
employee_skills ( employee_id, skill_id, ..., pk employee_id, skill_id, fk skill_id );
skills ( skill_id, description, ..., pk skill_id );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WHERE IN điều kiện không chấp nhận giá trị chuỗi

  2. Tránh cắt bỏ CHAR khi sử dụng liên kết eclipselink

  3. Cách chọn các giá trị cụ thể từ XML bằng cách sử dụng Oracle Xquery

  4. Hàm danh sách ORACLE SQL

  5. Cấu hình trình nghe Oracle để lắng nghe bên ngoài