Hỏi Đáp

Welcome!

This community is for professionals and enthusiasts of our products and services.
Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.

0

ORM trong OPENERP

Ảnh đại diện
david

Chào ACE,
Vấn đề 1:
Giữa 2 table có quan hệ 1-n mình thiết kế như sau:
Table a
field 1: fields.char('F 1', size=30,required=True),
field 2: fields.many2one('Table b','F 2')

Table b:
Field 3: fields.char('F 3', size=30,required=True),
field 4: fields.one2many('Table a','field 2','F 2'),


Mình tạo như vậy có ổn không?

Đó là về mối quan hệ 1-n.

Vấn đề 2:
Về mối quan hệ n-n: theo nguyên tắc mình chuẩn hóa mối quan hệ này thành 1 - n. Ví dụ như mối quan hệ sinh viên và môn học: 1 sinh viên có thể đăng ký nhiều môn học và 1 môn học có nhiều sinh viên đăng ký. Khi đó mình chuẩn hóa như sau:
SV - MH=> SV(1) - (n)Biên lai(n) - (1)MH.

SV có PK là Mã SV, MH có PK là Mã MH. Theo nguyên tắc khi chuẩn hóa mình có thể lấy PK của SV và MH làm PK cho table Biên lai. Như vậy table Biên lai có 2 PK là Mã SV và Mã MH.

Các ACE giúp mình design table Biên lai này với!
Thanks.

Ảnh đại diện
Huỷ bỏ
1 Trả lời
0
Ảnh đại diện
Leo Tran
Best Answer
Chào ACE,
Vấn đề 1:
Giữa 2 table có quan hệ 1-n mình thiết kế như sau:
Table a
field 1: fields.char('F 1', size=30,required=True),
field 2: fields.many2one('Table b','F 2')

Table b:
Field 3: fields.char('F 3', size=30,required=True),
field 4: fields.one2many('Table a','field 2','F 2'),


Mình tạo như vậy có ổn không?

Đó là về mối quan hệ 1-n.

Vấn đề 2:
Về mối quan hệ n-n: theo nguyên tắc mình chuẩn hóa mối quan hệ này thành 1 - n. Ví dụ như mối quan hệ sinh viên và môn học: 1 sinh viên có thể đăng ký nhiều môn học và 1 môn học có nhiều sinh viên đăng ký. Khi đó mình chuẩn hóa như sau:
SV - MH=> SV(1) - (n)Biên lai(n) - (1)MH.

SV có PK là Mã SV, MH có PK là Mã MH. Theo nguyên tắc khi chuẩn hóa mình có thể lấy PK của SV và MH làm PK cho table Biên lai. Như vậy table Biên lai có 2 PK là Mã SV và Mã MH.

Các ACE giúp mình design table Biên lai này với!
Thanks.

Chào David,

Mình xin trả lời câu hỏi của bạn như sau:

1. Về quan hệ 1-n trong OpenERP bạn tạo như vậy là ổn rồi.
2. Về quan hệ n-n thì đúng là bạn cần 1 bảng bao gồm 2 PK là Mã SV và Mã MH để thể hiện quan hệ n-n. Tuy nhiên như thế vẫn chưa đủ, trong trường hợp này ta nên dùng mô hình Master-Details. Cụ thể bạn sẽ có các bảng như sau:
- table SV (danh sách SV)
- table MH (danh sách MH)
- table Biên lai (master) có các trường date, number, SV (many2one).
- table Chi tiết Biên lai (details) có các trường: bienlai_id (many2one), monhoc_id (many2one), đây sẽ là 2 trường PK của table này.

Trên thực tế, 1 biên lai bạn chỉ ghi cho 1 SV và details của nó sẽ là các môn học => 1 SV có nhiều MH. Ngoài ra MH có thể xuất hiện ở nhiều biên lai dành cho các SV khác => 1 môn học có nhiều SV đăng ký.
1 Bình luận
Ảnh đại diện
Huỷ bỏ
Ảnh đại diện
ViindooBot
-

Thanks Leo Tran.
Chúc 1 ngày vui vẻ nhé

Trả lời của Bạn

Vui lòng đảm bảo câu trả lời của bạn có liên quan và giải đáp đúng nội dung câu hỏi. Nếu muốn bình luận về câu hỏi hoặc câu trả lời, hãy sử dụng công cụ Bình luận. Lưu ý, bạn có thể thay đổi nội dung trả lời thay vì trả lời lại 02 lần cho cùng một câu hỏi. Đồng thời bạn có thể nhấn nút để bầu chọn câu hỏi / câu trả lời tốt nhất.