01/10/2018, 09:55

Hỏi về cách thêm row mà không trùng nhau trong SQL

Mình có một CSDL Đại Loại Như Vậy

Mình muốn các dòng trong table “MonHoc”
Với 2 Trường “F_MaKhoi” và “Ten” có các Row khi thêm vào thì không được trùng nhau
VD:


Như Hình 2 Thì có 2 dòng Tên: Hóa Học Và F_Makhoi giống nhau . mình muốn không thêm được như vậy
một là khác Tên hoặc khác F_MaKhoi

// Mình hỏi cách giải quyết bên SQL còn bên lập trình thì mình nghĩ có cách rồi!

Dark.Hades viết 12:07 ngày 01/10/2018

Bạn tìm hiểu về unique trong SQL
https://www.w3schools.com/sql/sql_unique.asp

B Im C viết 12:10 ngày 01/10/2018

mình biết cái unique nhưng nó áp dụng cho 1 colum: làm cho trong colum đó hk có row nào giống nhau.
nhưng mình cần 2 colum : 1 là Fkey và 1 colum

Nguyen Ca viết 11:56 ngày 01/10/2018

thiết kế như chú sai rồi, thấy mô hinh như chú thì n-n mơi đúng.

B Im C viết 11:57 ngày 01/10/2018

bạn nói đúng! mình chỉ quản lý theo khối thôi cái này tùy thuộc vào nghữ cảnh mà!

bạn có thể nghĩ ra trường hợp Lớp_SinhVien và mình muốn trong 1lop hk co sv trùng tên.

nhưng nếu set trường Ten Unique thì trong cả 1 table hk thể có 2 tên giống nhau!

Nguyen Ca viết 12:08 ngày 01/10/2018

tách khối ra khỏi môn học, tao table mớ(khoi_mon) co key là mã môn với mã khối, vậy là thỏa yêu cầu của bạn:

  • không thể có 2 dòng mà mã môn với mã khối trùng được
  • khôn thê có dòng trong table khoi_mon mà trong table môn học không có
  • không thể có dòng tra table khoi_mon mà trong table khối không có.
B Im C viết 12:10 ngày 01/10/2018

như vậy hả bạn! cách thành N-N theo ý bạn!

Nguyen Ca viết 12:10 ngày 01/10/2018

Trang thái môn học nó phụ thuộc vào khối vơi môn luôn -> đưa vao table Khoi_mon là đẹp. cơ bản đã đảm bảo ràng buộc toàn vẹn.

B Im C viết 12:05 ngày 01/10/2018

OK! cảm ơn bạn đã giúp đỡ

Bài liên quan
0