PDA

View Full Version : Thiết kế CSDL



GiangPhiNgu
21-03-2007, 19:05
Các bạn xem hộ mình lược đồ cơ sở dữ liệu của mình xem có chỗ nào không hợp lý hay có sai thiếu chỗ nào xin góp ý giúp mình. Cám ơn nhiều.
Đây là thiết kế CSDL cho đề tài xây dựng hệ thống thông tin cho 1 công ty phần mềm. Nội dung sơ bộ là:

Dùng hệ thống này để quản lý thông tin cho 1 công ty phần mềm từ khi nhận dự án cho đến khi hoàn thành sản phẩm giao cho khách hàng.
Trong hệ thống này ngoài việc quản lý nhân sự, quản lý các dự án, quản lý thông tin khách hàng, quản lý các hợp đồng, quản lý sản phẩm như mọi project quản lý khác, thì nó thêm phần hỗ trợ nhân viên phòng kỹ thuật (programmer, tester,...) báo cáo được % công việc của mình đã làm được, % công việc chưa làm cùng những khó khăn ở 1 giai đoạn nào đó. Sau đó giám đốc có thể vào để xem tiến độ thực hiện công viêc. Hệ thống còn hỗ trợ việc cập nhật lịch làm việc của nhân viên, phân công cho nhân viên tham gia dự án. Hệ thống cho phép mọi người xem tài liệu tham khảo (cái này thì chỉ cho 1 link tới trang web có chứa tài liệu đã được upload).

saigon1990
22-03-2007, 02:42
Mới nhìn sơ qua thôi thấy cũng được. Như xin góp chút ý kiến sau:
1> bảng NhanVien & Quyen nên là many-to-many, cần có một link table giữa 2 bảng.
2> bảng ChiTietTinhTrangCongViec, thiết nghĩ chỉ cần trường PhanTramCongViecDaLam mà không cần phải có trường PhanTramCongViecConLai. Tương tự không cần trường ThoiGianConLai (trên thực tế trường này hay là negative lắm :) )
3> Nên có một trường "tinhtrang", đặt ra nhiều tình trạng (Status) cho một công việc hay còn gọi life cycle của công việc. vì trên thực tế không phải công việc nào cũng đi đến hoàn tất một dễ dàng mà nhiều khi đứng (pending) giữa đường. thiết nghĩ nên có trường "tinhtrang" để dễ làm reports.
4> Cần thêm những trường timestamp cho những bảng thích hợp để ghi lại quá trình xảy ra. vd. trường InsertDate, UpdateDate, Insertby, Updateby, v.v..

sơ sơ vậy thôi từ từ thảo luận tiếp hả.
thx
tn

phatnq2003
22-03-2007, 11:20
Bạn coi chừng bị circle reference đó.
Với lại bạn để ý: nếu bạn xóa một công việc trong table congviec, nó sẽ dẫn đến chitiettinhtrangcongviec và bangphancong có những record có chứa macongviec = macongviec của record trong table congviec mà bạn đã xóa. Trong tình huống này, nếu quan hệ giữa nhanvien và bangphancong không cho phép xóa thì "ò í e", bạn không thể xóa record trong congviec được. Tương tự cho chitiettinhtrangcongviec...
Từ ý kiến này, bạn có thể thay đổi lại sao cho hay hơn một chút đi.
Có gì post lên để tám tiếp.

GiangPhiNgu
22-03-2007, 22:31
Nếu thế thì mình sẽ điều chỉnh theo cách này, các bạn xem thử được ko nhé.
giữa 2 bảng nhân viên và Quyền minh sẽ thêm bảng PhânQuyền gồm các record sau:
- MaQuyen, MaNV: Primary key
- LoaiQuyen(quyền manager hay nhân viên gì đó).Ko biết còn thêm cái record nào ko nữa. Gợi ý thêm cho mình nha.
Cám ơn lời góp ý của bạn SaiGon1990, vậy bảng CongViec minh se them vào record "TìnhTrạng" còn bảng ChiTietTinhTrangCongViec thì xóa đi 2 trường dư mà bạn góp ý. Bạn nói đúng, chỉ cần xem xét đã làm duoc phần nào là được rùi, còn muốn biết đã xong chưa chỉ cần xét "status" của nó là biết ngay, ko cần thiết có thêm 2 trường kia.
À, các bạn ơi, mình thấy có sự ko ổn ở những liên kết giữa các table như (ChiTietTinhTrangCongViec, CongViec,NhanVien,BangPhanCong) nhưng chưa biết chỉnh sao cho hợp lệ, các bạn góp ý giúp mình nha.
Cám ơn rất nhiều

saigon1990
22-03-2007, 23:57
ý kiến của phatnq cũng hay, cần coi lại những Consraint cho đúng. nhưng mình nghĩ đây là bước 2 rồi, chưa bàn tới?. Ngay đây thì mình có ý kiến là với một Enterprise System không cần có "delete" mà cần cho thêm một trường "IsActive" vô những bảng thích hợp vd như NhanVien, CongViec, DuAn, v.v... Thay vì "delete" thì mình sử dụng "InActive" hay hơn.

Ý kiến về "name convention", sao bảng PhanQuyen và bảng BangPhanCong bạn không đặt là NhanVienQuyen và NhanVienCongViec? nhìn vô biết liền đó là link table. Giống như trong pub DB có bảng titles, authors, TitleAuthor. Cái này chỉ là chuyện nhỏ thôi tuy theo mỗi người.

Loại Quyền: Admin, Director, Manager, Sr Programmer, Programmer, Tester, Designer, ......

có sự không ổn trong bảng ChiTietTinhTrangCongViec, CongViec,NhanVien,BangPhanCong theo mình thấy là không cần BangPhanCong, vì trong ChiTietTinhTrangCongViec đã có đủ 2 trường MaNV và MaCongViec rồi. còn 2 trường NgayBatDau, NgayKetThuc bỏ vô bảng CongViec là xong.

Trong thiết kế này bạn có nghĩ đế chuyện chuyển đổi không? thí vụ như NV_1 đang làm MaCongViec_1 được 40%, lăn đùng ra chết. NV_2 nhảy vô tiếp tục làm MaCongViec_1 thêm 30% nữa rồi phải đi công tác nước ngoài. NV_3 nhảy vô làm tiếp cho đến hết. Với thiết kế như hiện tại có vẻ bị ò í e :). Tương tự đối với DuAn và HopDong cũng vậy đang là giữa chưng thì bị (được) bán sang một KhachHang khác thì chuyện gì xảy ra?

thanks
tn

GiangPhiNgu
23-03-2007, 18:16
Các bạn ơi, mình có chỉnh lại 1 số cái, mình upload lên các bạn xem và thảo luận tiếp nha. Cám ơn nhiều

saigon1990
23-03-2007, 23:31
Trường "tinhtrang" trong bảng Congviec phải là Matinhtrang, song phải có thêm một bảng tinhtrang. Vì mỗi khách hàng sử dụng họ sẽ có những tên tình trạng khác nhau.
Còn nhiều cái để thảo luận thêm lắm. Nhưng bạn phải đưa ra hướng thảo luân hoặc scenario thi mới dễ cho mọi người thảo luận. còn không thì chốt lại như vậy là có chút hơi cho một professional design rồi :confused: .
thanks
tn

terafunny
23-03-2007, 23:48
Các bạn ơi, mình có chỉnh lại 1 số cái, mình upload lên các bạn xem và thảo luận tiếp nha. Cám ơn nhiều

Bạn nên sắp xếp cái diagram cho nó gọn hơn và phân theo nhóm như vậy sẽ dễ quản lý và chỉnh sửa hơn :)

GiangPhiNgu
30-04-2007, 21:19
các bạn ơi, cho mình hỏi. Làm cách nào lưu xuống csdl là 1 cái đường dẫn dẫn đến 1 file word hay liên kết đến chương trình MSProject. Để khi load csdl lên thì nó hiện lên cái link, khi click lên nó sẽ dẫn mình đến đúng cái đường dẫn mà mình đã lưu trong 1 field trong 1 bảng? Dùng WindowForm - VS2005 và SQL 2000.Thank yu

phatnq2003
02-05-2007, 12:08
các bạn ơi, cho mình hỏi. Làm cách nào lưu xuống csdl là 1 cái đường dẫn dẫn đến 1 file word hay liên kết đến chương trình MSProject. Để khi load csdl lên thì nó hiện lên cái link, khi click lên nó sẽ dẫn mình đến đúng cái đường dẫn mà mình đã lưu trong 1 field trong 1 bảng? Dùng WindowForm - VS2005 và SQL 2000.Thank yu

Tạo một field lưu đầy đủ đường dẫn. Khi thiết kế trong webform, cho một control Link Label. Dùng code để gán thuộc tính Text của nó là đường dẫn đã lưu.

Trong trang code, bạn Imports Namespace System.IO

Bạn tạo một thủ tục để truy cập các thủ tục Open file liên quan
có tham số truyền vào là Text của Link Label.
Khi người dùng click lên label thì cho chạy thủ tục trên.
Còn cách khác nữa dùng component của VS2005. bạn khám phá thêm.

GiangPhiNgu
02-05-2007, 12:56
Sorry nha, ý mình hỏi là trong winform, chứ ko phải webform đâu bạn ơi. Mà hiện lên trên listview hay datagridview mới thấy được những field khác chứ. Trong 1 table có nhiều field, những field khác chứa thông tin dữ liệu bình thường, chỉ có 1 vài cái chứa đường dẫn thôi. Bạn có thể chỉ lại cho mình được chứ?

phatnq2003
03-05-2007, 08:41
Thì nếu không dùng Link Label thì dùng Label thường, có sao đâu nè?
Do trong bài hỏi của bạn đâu có nói là bạn đổ vào ListView hay DataGridView đâu. Nếu mà bạn dùng trong đó thì bạn hãy bắt sự kiện tương ứng của column chứa đường dẫn là được chứ có gì đâu?

GiangPhiNgu
04-05-2007, 23:03
thôi cám ơn bạn nhiều, mình làm được cái phần đó rùi. Có gì thắc mắc nữa mính sẽ post lên hỏi sau. Thank nha

dhquan_uct
11-03-2008, 19:20
sao minh ko dơnload dc

mrhua88
30-08-2010, 20:15
Mong anh em cho gợi ý, tôi thấy rắc rối quá. Tôi muốn có CSDL cho trang ASP của mình nhưng làm mãi mà khồng được, Tôi có 50 mặt hàng cố định cấp cho các đại lý. Tôi muốn biết các đại lý đó trong ngày bán được cụ thể mỗi mặt hàng là bao nhiêu tiền , CSDL mà tôi mong muốn như sau Account, username password, ngày tháng năm, HANG1, HANG2...đến HANG50. tôi muốn tạo CSDL để có thể quản lý được trong ngày cụ thể thì user nào bán được mặt hàng nào bao nhiêu tiền. CSDL có thể lưu được dữ liệu 1 tuần và tự xóa các dữ liệu 7 ngày về trước, có nghĩa là chỉ lưu 7 ngày gần đây nhất. Xin cảm ơn

maicon
30-08-2010, 20:28
hình như rắc rối là bác mrhua88 ko biết viết query chứ ko phải là ko biết thiết kế dữ liệu, thiết kế dữ liệu hay và dở thôi, miễn ko thiết kế tầm bậy là cỡ nào cũng query được mà.

Elliotnguyen
12-10-2010, 09:06
sao mình không download được cái sample vậy?

phamyen2207
16-10-2010, 15:50
giúp mình với bìa tập lớn monlập trình win nâng cao với cả nhà ơi! đề tài là quẩn lý thanh niên tình nguyện của trường với