Translating relationship attributes from ER diagram into SQL

后端 未结 2 1145
野的像风
野的像风 2021-02-09 22:26

Currently trying to get to grips with SQL for the first time, so I am working through a few problems. Here is a sample database spec:

Students (name, gend

相关标签:
2条回答
  • 2021-02-09 23:06

    Yes, you should create a Meeting entity to represent the many to many relationship between Student and Supervisor. In it you can relate to those tables using foreign keys that correspond to the those respective tables. In SQL it may look something like this:

    Create table Meeting {
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    student_id INT NOT NULL,
    supervisor_id INT NOT NULL,
    //rest of the fields...   
    FOREIGN KEY (student_id) REFERENCES Student(id)
    FOREIGN KEY (supervisor_id) REFERENCES Supervisor(id)
    }
    

    You would also do the same thing for the Supervise between Project and Supervisor. Also you could use something called a composite key on your Meeting table, I guess it comes down to personal preference, I usually do it this way when representing many to many relationships. I'm not saying this is the syntax you will use, that depends on your database, this was just an example to point you in the right direction. Hope it helps.

    Also for your diagram (I'm just guessing this is for a class) you might want to look into software such as visio or visual paradigm to create your ER diagram. While most people will be able to understand your current diagram, that's not correct modeling.

    For fun I made a diagram based on your tables: enter image description here

    You would want an entity between Supervisor and Project if they are a many to many relationship. This is called an associative entity. I labeled mine SupervisorProject just so they are a little more clear.

    Edit Overlooked the fact that Student and project was a many to one, fixed that, sorry.

    0 讨论(0)
  • 2021-02-09 23:10

    In response to Cohagen this stackoverflow post suggests that many to many relationships like Supervise can be represented by keeping the relationship table even if it has no attributes. In contrast the Do table lies between a many to one relationship and doesn't have attributes so we can get rid of it and simply add a foreign key reference to the project table in students.

    0 讨论(0)
提交回复
热议问题