| | 1 | = Relational Design = |
| | 2 | |
| | 3 | == Notation == |
| | 4 | |
| | 5 | * Primary keys are bolded and underlined. |
| | 6 | * Foreign keys are marked with `*` at the end of their name and the referenced entity is written in parentheses. |
| | 7 | * Required (not optional) attributes are bolded. |
| | 8 | |
| | 9 | == Tables == |
| | 10 | |
| | 11 | 1. '''Users''' ('''**id**''', '''username''', '''password''', '''email''') |
| | 12 | |
| | 13 | 2. '''Admins''' ('''**user_id**'''* (Users)) |
| | 14 | |
| | 15 | 3. '''Components''' ('''**id**''', '''name''', '''brand''', '''price''', img_url) |
| | 16 | |
| | 17 | 4. '''CPU''' ('''**component_id**'''* (Components), '''socket''', '''cores''', '''threads''', '''base_clock''', boost_clock, '''tdp''') |
| | 18 | |
| | 19 | 5. '''GPU''' ('''**component_id**'''* (Components), '''vram''', '''tdp''', base_clock, boost_clock, '''chipset''', '''length''') |
| | 20 | |
| | 21 | 6. '''Memory''' ('''**component_id**'''* (Components), '''type''', '''speed''', '''capacity''', '''modules''') |
| | 22 | |
| | 23 | 7. '''Storage''' ('''**component_id**'''* (Components), '''type''', '''capacity''', '''form_factor''') |
| | 24 | |
| | 25 | 8. '''Power_Supply''' ('''**component_id**'''* (Components), '''type''', '''wattage''', '''form_factor''') |
| | 26 | |
| | 27 | 9. '''Motherboard''' ('''**component_id**'''* (Components), '''socket''', '''chipset''', '''form_factor''', '''ram_type''', '''num_ram_slots''', '''max_ram_capacity''') |
| | 28 | |
| | 29 | 10. '''PC_Case''' ('''**component_id**'''* (Components), '''cooler_max_height''', '''gpu_max_length''') |
| | 30 | |
| | 31 | 11. '''Case_Storage_Form_Factors''' ('''**case_id**''', '''**form_factor**''') |
| | 32 | |
| | 33 | 12. '''Case_PS_Form_Factors''' ('''**case_id**''', '''**form_factor**''') |
| | 34 | |
| | 35 | 13. '''Case_Mobo_Form_Factors''' ('''**case_id**''', '''**form_factor**''') |
| | 36 | |
| | 37 | 14. '''Cooler''' ('''**component_id**'''* (Components), '''type''', '''height''', '''max_tdp_supported''') |
| | 38 | |
| | 39 | 15. '''Cooler_CPU_Sockets''' ('''**cooler_id**''', '''**socket**''') |
| | 40 | |
| | 41 | 16. '''Memory_Card''' ('''**component_id**'''* (Components), '''num_slots''', '''interface''') |
| | 42 | |
| | 43 | 17. '''Optical_Drive''' ('''**component_id**'''* (Components), '''form_factor''', '''type''', '''interface''', '''write_speed''', '''read_speed''') |
| | 44 | |
| | 45 | 18. '''Sound_Card''' ('''**component_id**'''* (Components), '''sample_rate''', '''bit_depth''', '''chipset''', '''interface''') |
| | 46 | |
| | 47 | 19. '''Sound_Card_Channels''' ('''**sound_card_id**''', '''**channel**''') |
| | 48 | |
| | 49 | 20. '''Cables''' ('''**component_id**'''* (Components), '''length_cm''', '''type''') |
| | 50 | |
| | 51 | 21. '''Network_Adapter''' ('''**component_id**'''* (Components), '''wifi_version''', '''interface''', '''num_antennas''') |
| | 52 | |
| | 53 | 22. '''Network_Card''' ('''**component_id**'''* (Components), '''num_ports''', '''speed''', '''interface''') |
| | 54 | |
| | 55 | 23. '''Build''' ('''**id**''', '''user_id'''* (Users), '''name''', '''created_at''', description, '''total_price''', '''is_approved''') |
| | 56 | |
| | 57 | 24. '''Build_Component''' ('''**build_id**''', '''**component_id**''') |
| | 58 | |
| | 59 | 25. '''Favorite_Build''' ('''**build_id**''', '''**user_id**''') |
| | 60 | |
| | 61 | 26. '''Rating_Build''' ('''**build_id**''', '''**user_id**''', '''value''') |
| | 62 | |
| | 63 | 27. '''Review''' ('''**id**''', '''build_id'''* (Build), '''user_id'''* (Users), '''content''', '''created_at''') |
| | 64 | |
| | 65 | 28. '''Suggestions''' ('''**id**''', '''user_id'''* (Users), admin_id* (Admins), '''link''', admin_comment, description, '''status''', '''component_type''') |
| | 66 | |
| | 67 | == DDL script for creating the database schema == |
| | 68 | |
| | 69 | [https://develop.finki.ukim.mk/projects/pc-forge/attachment/wiki/WikiStart/schema_creation.sql] |
| | 70 | |
| | 71 | == DML script for filling tables with data == |
| | 72 | |
| | 73 | [https://develop.finki.ukim.mk/projects/pc-forge/attachment/wiki/WikiStart/data_load.sql] |
| | 74 | |
| | 75 | == Relational diagram == |
| | 76 | |
| | 77 | [[Image(relational-diagram.png)]] |
| | 78 | |
| | 79 | |