Lưu dữ liệu vào database và lấy dữ liệu ra để kiểm tra sao cho hợp lý

Capture

mình có 1 table loại nghỉ phép như trên
và có yêu cầu là lấy ra danh sách các loại nghỉ, và tìm ra loại nghỉ không lương , và cộng thêm 1 vào colum ngày nghỉ của loại nghỉ không lương này

hiện giờ mình đang làm theo cách so sánh chuỗi String, là so sánh name của từng record với String “Nghỉ không lương”

tuy nhiên có 1 cái oái oăm là, cái table này cho phép nhập động chứ ko phải fix cứng, tức là có khả năng người dùng nhập vào tên loại nghỉ là NghỈ KhÔng Lương, thì lại ko thể tìm ra đúng được

và mình cũng thấy việc so sánh String thế này nó ko phải là cách đúng, vì viết như vậy thì trong code của mình lại fix cứng String “Nghỉ không lương” để so sánh, có cách nào tốt nhất trong trường hợp này ko nhỉ

1 Like

Dùng 1 bảng là không đúng rồi. Ai lại cho nhập trực tiếp kiểu nghỉ bằng chuỗi cơ chứ.
Bảng này là bảng “Danh sách Nghỉ phép” phải không?
Cần thêm 1 bảng “Kiểu nghỉ phép” nữa, chứa tên và định danh (id) của kiểu nghỉ đó. Khi nhập vào bảng “Danh sách” thì chỉ được phép chọn kiểu nghỉ (khóa ngoại) chứ không được nhập trực tiếp.

5 Likes

theo ý bạn có phải là mình sẽ tạo ra 1 bảng kiểu nghỉ phép nữa, và bảng này chỉ cho phép admin truy cập vào để thêm hoặc sửa, rồi bảng danh sách kia sẽ chỉ tham chiếu đến bảng này

và lúc đó trong bảng kiểu nghỉ phép này mỗi cái name nó sẽ ràng buộc với 1 cái id, lúc này trong code mình chỉ cần check id là đc ko cần check name đúng ko?
vd: id = 1 luôn ứng với nghỉ không phép

Chứ còn gì nữa, nhập môn CSDL quan hệ là mấy cái này phải rõ, đừng nói viết code mà không chịu học về CSDL quan hệ :smiley:

5 Likes

Cách đơn giản thì mình sẽ làm như vầy

tables: 

user
- id
- name

holiday
- id
- name
- type

user_holiday
- id
- user_id
- holiday_id

Còn user input thì mình làm cái HTML form, để cho user chọn, nhập liệu theo ý mình
Còn thống kê thì cứ SELECT * FROM xyz là 2 xong

4 Likes

giả sử table user có thêm trường lương, có yêu cầu là , user nào có holiday là chủ nhật thì tăng lương lên 1 và chức năng chạy auto chẳng hạn, và record trong table holiday có name = chủ nhật thì có id=1
thì lúc mình viết lệnh querry thì mình phải truyền vào cái id=1 đúng ko?, và code đó lại bị fix cứng là truyền id = 1 vào, tức là lúc này code đang bị phụ thuộc vào database

có cách nào để code chương trình không phải phụ thuộc vào database ko?

Đừng “giả sử”, mà hãy ngồi code thiệt luôn (code đơn giản, vừa đủ để chạy thôi)
Khi code thì bạn sẽ hiểu rõ hơn bạn cần làm cái gì, cần sửa cái gì.

4 Likes

Mình nghĩ bạn nên thiết kế lại chỗ người dùng nhập tên loại nghỉ.

Nên thiết kế chọn (combobox/select hoặc checkbox hoặc radio button) chứ đừng cho nhập tay

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?