Announcement

Collapse
No announcement yet.

[Hỏi] Viết Đại số quan hệ cho câu dùng SubQuery!!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Hỏi] Viết Đại số quan hệ cho câu dùng SubQuery!!

    TOUR(MaTour, TenTour, SoNgay, SoDem, PT_Di, PT_Ve, GiaLe, GiaNhom)
    Tân từ: mỗi tuyến du lịch cần lưu trữ mã Tour (MaTour), tên tua (TenTour), bao nhiêu ngày (SoNgay), bao nhiêu đêm (SoDem), phương tiện đi (PT_Di), phương tiện về (PT_Ve), giá lẻ (GiaLe) dành cho khách đăng ký dưới 5 người và giá nhóm (GiaNhom) dành cho khách đăng ký từ 5 người trở lên.

    TINHTP (MaTTP, TenTTP, Mien)
    Tân từ: lưu trữ tất cả các tỉnh (thành phố) trong nước, gồm có những thông tin: mã tỉnh (hoặc thành phố) (MaTTP), tên tỉnh thành phố (TenTTP) và thuộc miền (Mien) nào.

    DIEMDL(MaDDL, TenDDL, MaTTP, Dactrung)
    Tân từ: mỗi điểm du lịch cần lưu trữ mã điểm du lịch (MaDDL), tên điểm du lịch (TenDDL) và điểm này thuộc tỉnh (thành phố) nào (MaTTP), đặc trưng (Dactrung) của điểm du lịch này là gì ? (chỉ lưu 1 đặc trưng chính như: ‘Tắm biển’, ’Leo núi’, ’Mua sắm’, ‘Tham quan’…)

    CHITIET (MaTour, MaDDL, Ngay, Dem)
    Tân từ: ghi nhận mỗi Tour (MaTour) đi qua các điểm du lịch (MaDDL) nào, bao nhiêu ngày (Ngay), bao nhiêu đêm (Dem).

    Đề bài : Viết câu truy vấn sau bằng đại số quan hệ: Tìm những Tour (MaTour) chỉ ghé qua các điểm du lịch ở miền ‘Trung’.

    Nếu làm câu trên bằng SQL thì e làm dc nhưng Đại số quan hệ thì e không biết là có dc làm như thế này ko :

    SQL :
    select MaTour
    from CHITIET
    where MADDL =

    (select MaDDL
    from TINHTP inner join DIEMDL on TINHTP.MaTTP = DIEMDL.MaTTP
    where Mien = 'Trung')
    Đại số quan hệ :

    R1 <-- MaDDL δMien=’Trung’ (TINHTP |×|MaTTP DIEMDL)

    R2 <-- MaTour δMaTour=R1.MaTour (CHITIET)
    Trong đó màu đỏ là phần e băn khoăn .
    δ là phép chọn
    |×| là phép kết
    Ai biết giúp e với...Thanks!!!
    Last edited by rebirth48; 23-05-2012, 00:11.

  • #2
    Không biết mình nghĩ đúng không chứ bạn làm sql như vậy cũng sai rôi. câu lệnh của bạn sẽ hiển thị những tua du lịch có đi qua miền trung còn đề bài là những tua đó chỉ đến miền trung bạn ak.
    Còn đại số quan hệ thì bạn làm phép trừ như sau:
    R1=những tua đi qua miền trung.
    R2= những tua không đi qua miền trung
    R3=R1\R2
    Còn viết thế nào thì tùy bạn viết nhé
    :love:
    Tương lai khóc hay cười phụ thuộc vào độ lười của quá khứ.
    :cry:

    Comment


    • #3
      Mình nghĩ câu này chia là 2 bước đi.
      1 là tìm các tour du lịch ở miền Trung (R1)
      2 là tìm các tour di lịch không ở miền Trung (R2)
      Rồi lấy R1\R2

      Comment


      • #4
        Hôm nay suy nghĩ lại thì lại thấy không đúng nữa rồi:
        R2 phải là những tour đi qua miền nam or nhưng tua đi qua miền bắc.
        sql viết là: select matour from chitiet, diemdl,tinhtp where chitiet.maddl=diemdl.maddl and diemdl.mattp=tinhtp.mattp and mien='mientrung'
        not in (select select matour from chitiet, diemdl,tinhtp where chitiet.maddl=diemdl.maddl and diemdl.mattp=tinhtp.mattp and mien='miennam' or mien= 'mienbac')
        Last edited by 11520139; 23-05-2012, 08:07.
        :love:
        Tương lai khóc hay cười phụ thuộc vào độ lười của quá khứ.
        :cry:

        Comment

        LHQC

        Collapse
        Working...
        X