SQL Database design help

GT9

Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    මචං හිතන්න db එකක් තියෙනව ඒකේ එක එක අයිටම්ස් තියෙනව. ඒ ඒ අයිටම් එක හදල තියෙන්නේ එක්කෝ එක්කෙනෙක් තනියම, නැත්නම් කීපදෙනෙක් එකතු වෙලා. මට ඕන වෙලා තියෙනව එක පේජ් එකක මෙන්න මේ පහලින් පෙන්නල තියෙනව වගේ රිසල්ට් සෙට් එකක් ඩිස්ප්ලේ කරන්න.

    item 01 - creator
    -------------------------------------------
    item 02 - creator_01, creator_02 & creator_3
    --------------------------------------------
    item 02 - creator_01 & creator_6


    ඔන්න ඔය වගේ...

    ඔතන item 01, item 02 වගේ තොරතුරු item table එකෙන් ගන්න පුලුවන්. තව මම creator table එකකුත් හදල තියෙන්නේ. ඒකෙන් creator_01, creator_02 වගේ නම් අරගන්නත් පුලුවන්.

    අවුල තමයි කොහොමද මේ වගේ comma seperated list එකක් විදියට පෙන්නන්නේ & වගේ සලකුනුත් මැදට දාල? :confused::sorry:

    උදාහරණයක් විදියට පෙන්නනව නම් මෙන්න මේ විදියට හදාගන්න එක තමයි අවුල...

    විරාගය - ගුණසේන රත්නපාල, දහම් සිරිපාල & ජනිත් උබේසේකර
    මහගෙදර - තිලක් ජයපාල & කැලුම් සිරිතිලක්
    ගමේ අසිරි - නිලන්ත උබේසිරි, ජනක විමලසිරි, රුබී රූබන්, විමලා ජයහෙට්ටි & සිතුම් විමංසක

    ඔන්න ඔය වගේ රිසලට් සෙට් එකක් මට පෙන්නන්න ඕන කරල තියෙන්නේ. ඒත් ඔය වගේ කොමා දාල & සයින් එක දාල ඒ ඒ සඟරාව ලියන්න එකතු උන කතෟන්ගේ නම් කොහොමද සම්බන්ද කරන්නේ? :confused::sorry:

    ඒඒ කතූන්ගේ නම් වෙන වෙනම database table එකක තියෙන නිසා. කතෟ title එකක් විදියට eg:- නිලන්ත උබේසිරි, ජනක විමලසිරි, රුබී රූබන්, විමලා ජයහෙට්ටි & සිතුම් විමංසක

    table එකක field එකක් දහල දාන්න මම කැමති නෑ මොකද තැන් දෙකක කතෟලගෙ නම් repeat වෙන නිසා.. :eek::sorry:
     
    • Like
    Reactions: Wild-EYE

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    Machan "concat" function ekak use karapan.

    concatenation වලින් මචං කරන්න පුලුවන් තමයි ඒත් අර & එකත් දාගන්නේ කොහොමද? ඔන්න කොමා වලින් විතරක් සම්බන්ද කරනවනම් අවුලක් නෑ :D
     

    Ayeshlive

    Well-known member
  • Jul 1, 2011
    10,570
    943
    113
    *̶͑̾̾​̅ͫ͏̙̤g͛͆̾ͫ̑͆&
    Oka normalize karoth me wage table ekak one wenne:

    book_author:
    book_id (int)
    author_id (int).
    Indexes: (book_id, author_id) PRIMARY, book_id, author_id

    Me fields dekama item (book) table ekatai author table ekatai foreign keys daganna.

    book:
    book_id (int, serial primary).
    name (varchar 255)
    Indexes: name

    author:
    author_id (int serial primary)
    name (varchar 255).
    Indexes: name.

    Dan eka book ekaka authors la ganna one nam:

    -
    Code:
    SELECT a.name, a.author_id FROM book_author ba INNER JOIN author a ON ba.author_id = a.author _id WHERE ba.book_id = :book_id
    :-)book_id placeholder replace karanna book ID eken).

    Books by given author ID:

    -
    Code:
    SELECT b.name, b.book_id FROM book b INNER JOIN book_author ba ON b.author_id = ba.author_id WHERE ba.author_id = :author_id
    Me queries deken list ekak ganna puluwan (language eka anuwa wenas wenawa). Dan use karala language eken implode karaganna. Database engine eken concat karana baha wenas rows nisa. Ehema karanna puluwan wunath (columns walata wen karala) eka amu gon wadak.
     
    Last edited:

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    Oka normalize karoth me wage table ekak one wenne:

    book_author:
    book_id (int)
    author_id (int).
    Indexes: (book_id, author_id) PRIMARY, book_id, author_id

    Me fields dekama item (book) table ekatai author table ekatai foreign keys daganna.

    book:
    book_id (int, serial primary).
    name (varchar 255)
    Indexes: name

    author:
    author_id (int serial primary)
    name (varchar 255).
    Indexes: name.

    Dan eka book ekaka authors la ganna one nam:

    -
    Code:
    SELECT a.name, a.author_id FROM book_author ba INNER JOIN author a ON ba.author_id = a.author _id WHERE ba.book_id = :book_id
    :-)book_id placeholder replace karanna book ID eken).

    Books by given author ID:

    -
    Code:
    SELECT b.name, b.book_id FROM book b INNER JOIN book_author ba ON b.author_id = ba.author_id WHERE ba.author_id = :author_id
    Me queries deken list ekak ganna puluwan (language eka anuwa wenas wenawa). Dan use karala language eken implode karaganna. Database engine eken concat karana baha wenas rows nisa. Ehema karanna puluwan wunath (columns walata wen karala) eka amu gon wadak.

    thanks machan authors ල සෙට් එක ගන්න පුලුවන් මට මේ කරගන්න බැරුව ඉන්නේ කොමා දාල අන්තිම කතෟට කලින් & සයින් එක දාන එක. :sorry: තනිකරම කොමා වලින් විතරක් සෙම්බන්ද කරනවනම් අවුලක් නෑ. සමහර පොත් වලට කොමා ඇත්තෙම නෑ මේ වගේ එන්නේ...

    රන් එතනා - ජයමිණි කුමාරි & තලතා අතුකෝරාල

    ඔන්න ඔය වගේ පෙන්නන්න වෙන අවස්තාත් තියෙනව. :oo:

    මට මේක කරගන්නනම බැරි උනොත් මචං මම හිතන් ඉන්නේ වෙනම ෆීල්ඩ් එකක් හදල

    "ජයමිණි කුමාරි & තලතා අතුකෝරාල"

    ඔය වගේ කෑලි වෙනමම ඒව ඇතුලට දාන්න. ඒත් හිතට නිකන් මොකක්ද වගේ කතෘලගෙ නම් තැන් දෙතනක තියෙන කොට. :baffled:

     

    Ayeshlive

    Well-known member
  • Jul 1, 2011
    10,570
    943
    113
    *̶͑̾̾​̅ͫ͏̙̤g͛͆̾ͫ̑͆&
    thanks machan authors ල සෙට් එක ගන්න පුලුවන් මට මේ කරගන්න බැරුව ඉන්නේ කොමා දාල අන්තිම කතෟට කලින් & සයින් එක දාන එක. :sorry: තනිකරම කොමා වලින් විතරක් සෙම්බන්ද කරනවනම් අවුලක් නෑ. සමහර පොත් වලට කොමා ඇත්තෙම නෑ මේ වගේ එන්නේ...

    රන් එතනා - ජයමිණි කුමාරි & තලතා අතුකෝරාල

    ඔන්න ඔය වගේ පෙන්නන්න වෙන අවස්තාත් තියෙනව. :oo:

    මට මේක කරගන්නනම බැරි උනොත් මචං මම හිතන් ඉන්නේ වෙනම ෆීල්ඩ් එකක් හදල

    "ජයමිණි කුමාරි & තලතා අතුකෝරාල"

    ඔය වගේ කෑලි වෙනමම ඒව ඇතුලට දාන්න. ඒත් හිතට නිකන් මොකක්ද වගේ කතෘලගෙ නම් තැන් දෙතනක තියෙන කොට. :baffled:


    Database design karanakota machan data redundancy gana hithanna one. E wagema eka minissunta pahadili wena eka athyawashya na.
     
    • Like
    Reactions: GT9

    Ghost1o1

    Junior member
  • Sep 4, 2014
    540
    24
    18
    මචන් මට තේරෙන විදිහට කරන්න පුළුවන් හොදම වැඩේ function එකක් දාන එක,
    ඉස්සරලා කොමා separate string column එකක් හදාගනින් උබට ඕන name ටික දාලා,

    එක function එක ඇතුලට යවලා, ඇතුලෙදි cursor එකකින් loop කරලා අන්තිම කොමා එක රෙප්ලස් කරපන් "&" එකට,

    ඕනනම් සම්ප්ලේ db එකක් ඒවපන් හදල දෙන්නම්
     
    • Like
    Reactions: GT9

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    මචන් මට තේරෙන විදිහට කරන්න පුළුවන් හොදම වැඩේ function එකක් දාන එක,
    ඉස්සරලා කොමා separate string column එකක් හදාගනින් උබට ඕන name ටික දාලා,

    එක function එක ඇතුලට යවලා, ඇතුලෙදි cursor එකකින් loop කරලා අන්තිම කොමා එක රෙප්ලස් කරපන් "&" එකට,

    ඕනනම් සම්ප්ලේ db එකක් ඒවපන් හදල දෙන්නම්


    thanks machanla...............:D