Database Design for an Online Course Website

Поділитися
Вставка
  • Опубліковано 22 гру 2024

КОМЕНТАРІ • 73

  • @DatabaseStar
    @DatabaseStar  Місяць тому

    Bonus PDF: This ERD, descriptions of each table and column with sample data, and SQL scripts to create all of the tables on your own database: www.databasestar.com/dbdesign/?

  • @roninspect4357
    @roninspect4357 Рік тому +3

    i struggle a lot designing a database. These videos are really helpful.

  • @judaperez681
    @judaperez681 7 місяців тому +4

    I was exploring your youtube content... NEW SUB!

  • @Alfenijonas
    @Alfenijonas 8 місяців тому +2

    Just leaving a comment so that more people might see this. Let's go DB fellows. :D

  • @felipemfrudeli
    @felipemfrudeli Рік тому +1

    you videos help me a lot. Im trying to start learning database design, and this channel is the best channel I can find, thx for videos, can you make a video about testing performance of database? (like put random data and stress)

    • @DatabaseStar
      @DatabaseStar  Рік тому +1

      Good to hear! Sure, I can make a video on that. Is there anything specific you want to know or see with testing the performance of a database?

  • @judaperez681
    @judaperez681 7 місяців тому +2

    The video I was looking for

  • @naveenchandpandey7940
    @naveenchandpandey7940 5 місяців тому +2

    Great video. Just a question I had about this. How are you capturing the progress of a student for restricting him from going to the next session before completing the current lesson. You have used is_progress_limited but till which point the student is allowed to access is not available i guess. Can you explain it a bit?

    • @DatabaseStar
      @DatabaseStar  5 місяців тому +1

      Thanks! Good question. In the student_lesson table there is a completed_datetime field which captures the date and time that a student has completed a lesson. If the course has a valuen of TRUE for is_progress_limited, then perhaps the application can determine which lessons the student has completed, and then only allow them to complete the next lesson.
      So, if the student has completed 8 lessons, the application can show that these 8 lessons are completed, and allow the student to watch lesson 9, but lessons 10 onwards are locked.

    • @naveenchandpandey7940
      @naveenchandpandey7940 5 місяців тому

      @@DatabaseStar Thank you very much for the quick response.

  • @Aacadian-xe8kq
    @Aacadian-xe8kq Рік тому +2

    Amazing content, thank you for this upload 👍👍👍

  • @CynicalSaint48
    @CynicalSaint48 9 місяців тому

    Thanks for the videos! Question I have never been able to find an answer to: Many simple tables versus Few complex tables. In this design, a 10 question quiz would have a Quiz table, 10 question tables, 10 correct answer tables, and 30 wrong answer tables. This results in 51 total tables in the database for a single quiz. Alternately, the quiz table could contain fields for the question id, question text, correct answer and 3 wrong answers, and then that table would have 10 entries.
    I am curious whether there are benefits of one or the other, or if it is just down to preference?
    Thanks again!

    • @DatabaseStar
      @DatabaseStar  9 місяців тому

      Good question! If you have a quiz with 10 questions, you would only need the three tables: one for quiz, one for quiz_question, and one for quiz_answer.
      Each table should usually represent an object or entity, so you shouldn't need 10 different question tables - you would have 1 table for all 10 questions. Same for answers: you could have 1 answer table to contain all answers, and an indicator to show if it is correct or not.
      Generally fewer tables is better, but there needs to be enough so that the data quality is maintained and it's easy to make changes in one place.

    • @CynicalSaint48
      @CynicalSaint48 9 місяців тому

      @@DatabaseStar Thanks, I follow now. Think I was just a bit thrown by the Lucid representation of the tables.
      Thanks for answering the many versus few tables question too!

  • @kane_lives
    @kane_lives Рік тому

    Glad you're still making the videos, Ben. Happy to leave a comment just to help you with YT's algorithms.

    • @DatabaseStar
      @DatabaseStar  Рік тому

      Thanks! Yeah still making videos, and will be for a while I think!

  • @lovetheentertainment9949
    @lovetheentertainment9949 Рік тому +3

    We need database design for cricket management along with their contracts, clubs, domestic structure etc

    • @DatabaseStar
      @DatabaseStar  Рік тому +2

      Good idea! I have a "sports league" on my list of future topics so I'll create one specific for cricket.

    • @lovetheentertainment9949
      @lovetheentertainment9949 Рік тому +1

      @@DatabaseStar I hope it will be your next video.

  • @abdo_alaa10
    @abdo_alaa10 3 місяці тому +1

    thanks you so much sir for this great explanation , but i have one question here
    - why we didn't add completed_datetime column to the course table?

    • @DatabaseStar
      @DatabaseStar  3 місяці тому

      Good question. We could determine that a course is completed if all lessons in the course are completed, so I didn't add it. But we could add that to the course table, and update it when the last lesson is completed.

    • @abdo_alaa10
      @abdo_alaa10 3 місяці тому

      @@DatabaseStar thanks sir , now i understand it well

  • @longn.8804
    @longn.8804 Рік тому +1

    Hello Ben. Thanks for your video. It's very helpful and awesome. I've got a question for you: In each table, there is a PK usually being "id", e.g. the "Course" table has the "id" field and the "Student" table has another "id" field. I totally understand that these "id" fields specifically refer to their corresponding tables.
    However, does it make duplicate field names (as far as I read somewhere)? Should we keep them identical like that (all "id" fields) or should we make them unique, for example, student_id in the Students table, course_id in the Course table, etc.? Thank you in advance.

    • @DatabaseStar
      @DatabaseStar  Рік тому +1

      Thanks, I'm glad you like the video!
      Good question. The main problem I see with having all fields called "id" (like I usually do) is that if you select from multiple tables, then there will be many ID fields shown and it can be hard to see what the ID represents (e.g. is the lesson ID or the course ID). You can use column aliases to work around this.
      Using a more descriptive column name, such as student_id or course_id as you suggested, is another approach - and I think it's probably the better approach as it's clearer what it represents in large queries and it matches the foreign key names. I didn't use this approach in this design but perhaps I should in future designs.
      I would suggest being consistent though - pick one approach and use it throughout your design.

    • @longn.8804
      @longn.8804 Рік тому

      @@DatabaseStar Thanks for your explanation! Appreciate it!

  • @vannakvy9109
    @vannakvy9109 5 місяців тому +2

    Thanks for the great video.

  • @dway89
    @dway89 Рік тому

    Exactly what was looking for

  • @walkingradiance9556
    @walkingradiance9556 3 місяці тому +1

    I think the column should be price, not price_usd. There could be a document saying the price is in USD. In addition, you could add this information to a comment on table or comment on column using SQL comment keyword.

    • @DatabaseStar
      @DatabaseStar  3 місяці тому

      Great point. It would be better as price as you mentioned and either of the approaches you mentioned could work.

  • @julionunes2092
    @julionunes2092 10 місяців тому +1

    I think the quiz should be related to the module instead of the course. By relating the quiz to the course, you won't be able to set the quiz in a specific module. One module may have one or more lecture and/or one or more quizzes.

    • @DatabaseStar
      @DatabaseStar  10 місяців тому

      That's a good point. We can change it to relate the quiz to a module.

  • @theprivterao
    @theprivterao 8 місяців тому

    You miss the review table in this Diagram and also course category is also important

    • @DatabaseStar
      @DatabaseStar  8 місяців тому

      That’s true, we can add those concepts into this diagram to add those features.

  • @hodadisbirhan652
    @hodadisbirhan652 3 місяці тому

    The Quize should be related with the lesson so lesson is attached with module and then module with course , so we can know quize found in the course which is easy

    • @DatabaseStar
      @DatabaseStar  3 місяці тому

      That approach can work as well, but it would mean the quiz would only relate to content from that lesson and not a module.

  • @Jackolltradez
    @Jackolltradez Рік тому

    I have a question please, wouldn't that join table have a primary key?

    • @DatabaseStar
      @DatabaseStar  Рік тому +1

      Yes, the joining tables could have a primary key to ensure they can be easily referenced and ensure they are unique. This could either be a combination of both FK columns, or a separate ID column.

    • @Jackolltradez
      @Jackolltradez Рік тому

      @@DatabaseStar Thank you.

  • @DuyNguyen-ti1ky
    @DuyNguyen-ti1ky Рік тому +1

    How can I get the pdf file which contains full content and diagram?

    • @DatabaseStar
      @DatabaseStar  Рік тому +1

      It's on the page mentioned in the description: www.databasestar.com/dbdesign/

  • @walkingradiance9556
    @walkingradiance9556 3 місяці тому +1

    You could store the actual video if you're using BLOBS binary large objects in something like Oracle where its capped at 4GB I think. I'm not sure how UA-cam handles their videos if they have them in a database or what. I think MySQL also has BLOBS like large BLOB, medium BLOB, etc. I think it would be a good idea to store the actual video. If the video isn't too long and is usually short say less than 30 minutes, then this could be reasonable.

    • @DatabaseStar
      @DatabaseStar  3 місяці тому

      Good idea, yeah it could be stored in the actual column as a BLOB.

  • @walkingradiance9556
    @walkingradiance9556 3 місяці тому

    Does the number go up or cycle? For example, if you have a module/section with 5 lessons, then a module/section with 4 lessons, would the lesson's be numbered 1 2 3 4 5, 6 7 8 9, or 1 2 3 4 5, 1 2 3 4?

    • @DatabaseStar
      @DatabaseStar  3 місяці тому

      I think it would go up and not cycle, but it would work both ways and depend on who would populate the data for the courses.

  • @yunmulu1659
    @yunmulu1659 Місяць тому

    Thanks for the lesson

  • @omauret
    @omauret Рік тому

    Your video is excellent; it's exactly what I was looking for. Currently, I'm working on an e-learning platform, and I'd like to know how to create the admin section and a table for the teacher. On my platform, there are paywalls to allow students access via a monthly or annual subscription. How can I develop this section, and what suggestions do you have to implement it?

    • @DatabaseStar
      @DatabaseStar  Рік тому +2

      Thanks! I don't have any specific suggestions, but I would say you can try to list down your requirements as sentences and then update the database design. For example, "a course has a teacher, and a teacher can teach many courses". This may mean you have a teacher table, and a foreign key from the course table to the teacher table.

  • @farhadeviltrg6116
    @farhadeviltrg6116 Рік тому +1

    Nice job👌

  • @walkingradiance9556
    @walkingradiance9556 3 місяці тому

    Synonyms for module include section, chapter, etc.

  • @celloucisse7548
    @celloucisse7548 4 місяці тому

    Million thanks to you for this video.
    For sure, I haven't really understand the concept of "number" and "course_number". would you like to me make clear for me plz ?!!

    • @DatabaseStar
      @DatabaseStar  4 місяці тому +1

      Sure! Those numbers are to be displayed on the screen, so the person taking the course (the student) can see things like "Lesson 4" or "Quiz 2". They can also be used to sort the list of lessons or quizzes.

  • @gershonsamwoode2334
    @gershonsamwoode2334 Рік тому

    Amazing. Thank you

  • @jsnow07grad
    @jsnow07grad 4 місяці тому

    very helpful

  • @walkingradiance9556
    @walkingradiance9556 3 місяці тому

    small thing--I think it's spelled enrollment, not enrolment.

    • @DatabaseStar
      @DatabaseStar  3 місяці тому

      Thanks, yeah in American English it’s enrollment but in Australian and British English (I’m in Australia) it’s enrolment.

  • @mikhailsandigan1424
    @mikhailsandigan1424 Рік тому

    Please make for an insurance website it would be really helpful.😊

  • @viveksankapal5877
    @viveksankapal5877 Місяць тому

    my project is online learning platform give me database

    • @DatabaseStar
      @DatabaseStar  Місяць тому

      That’s what this video is about!

  • @sumonsarkar791
    @sumonsarkar791 8 місяців тому