Apple
public://topics-images/apple_webp.png
SCB10X
public://topics-images/347823389_774095087711602_515970870797767330_n_webp.png
Windows 11
public://topics-images/hero-bloom-logo.jpg
Huawei
public://topics-images/huawei_standard_logo.svg_.png
Google Keep
public://topics-images/google_keep_2020_logo.svg_.png
Instagram
public://topics-images/instagram_logo_2022.svg_.png
SCB
public://topics-images/9crhwyxv_400x400.jpg
Microsoft
public://topics-images/microsoft_logo.svg_.png
Basecamp
public://topics-images/bwpepdi0_400x400.jpg
Tinder
public://topics-images/hwizi8ny_400x400.jpg
FTC
public://topics-images/seal_of_the_united_states_federal_trade_commission.svg_.png
Pinterest
public://topics-images/pinterest.png
Palantir
public://topics-images/-nzsuc6w_400x400.png
AIS Business
public://topics-images/logo-business-2021-1.png
PostgreSQL
public://topics-images/images.png
JetBrains
public://topics-images/icx8y2ta_400x400.png
Krungthai
public://topics-images/aam1jxs6_400x400.jpg
Palworld
public://topics-images/mccyhcqf_400x400.jpg
Bill Gates
public://topics-images/bill_gates-september_2024.jpg
VMware
public://topics-images/1nj4i1gp_400x400.jpg
Take-Two Interactive
public://topics-images/0khle7nh_400x400.jpg
OpenAI
public://topics-images/ztsar0jw_400x400.jpg
Thailand
public://topics-images/flag_of_thailand.svg_.png
NVIDIA
public://topics-images/srvczsfq_400x400.jpg
ServiceNow
public://topics-images/ytnrfphe_400x400.png
Klarna
public://topics-images/urcllpjp_400x400.png
Google Play
public://topics-images/play.png
Drupal
public://topics-images/drupal.png
Virtua Fighter
public://topics-images/virtua_figther_2024_logo.png
Paradox Interactive
public://topics-images/paradox_interactive_logo.svg_.png
Europa Universalis
public://topics-images/europa-icon.png
Nintendo Switch 2
public://topics-images/mainvisual.png
Cloudflare
public://topics-images/cloudflare_logo.svg_.png
Samsung
public://topics-images/samsung.png
Google
public://topics-images/google_2015_logo.svg_.png
Uber
public://topics-images/uber.png
Microsoft 365
public://topics-images/m365.png
USA
public://topics-images/flag_of_the_united_states.svg_.png
GM
public://topics-images/0pe0po-z_400x400.jpg
Perplexity
public://topics-images/perplex.jpg
Xperia
public://topics-images/xperia.png
iOS 18
public://topics-images/ios-18-num-96x96_2x.png
True
public://topics-images/true_logo.png
SoftBank
public://topics-images/softbank.jpg
Pac-Man
public://topics-images/pacman.png
Harry Potter
public://topics-images/harry.png
Marvel
public://topics-images/marvel.png
Skydance
public://topics-images/skydance.png
SEA
public://topics-images/sealogo.png
Find My Device
public://topics-images/find.png
Gemini
public://topics-images/google_gemini_logo.svg__1.png
Accessibility
public://topics-images/accessibility-128x128_2x.png
Material Design
public://topics-images/m3-favicon-apple-touch.png
Android 16
public://topics-images/android16.png
Android
public://topics-images/android_0.png
Firefox
public://topics-images/firefox_logo-2019.svg_.png
Google Messages
public://topics-images/messages.png
Notepad
public://topics-images/notepad.png
Singapore
public://topics-images/flag_of_singapore.svg_.png
Airbnb
public://topics-images/airbnb.png
PS5
public://topics-images/ps5.png
Krafton
public://topics-images/krafton.png
Doom
public://topics-images/doom-game-s_logo.svg_.png
AMD
public://topics-images/amd_logo.svg_.png
GTA
public://topics-images/gta_0.png
DoorDash
public://topics-images/doordash.png
YouTube
public://topics-images/yt.png
YouTube Music
public://topics-images/yt-music.png
Facebook
public://topics-images/fb.png
iQiyi
public://topics-images/iqiyi_0.png
Viu
public://topics-images/viu.png
Amazon Prime Video
public://topics-images/prime-vid.png
Spotify
public://topics-images/spotify.jpg
Apple TV
public://topics-images/apple-tv.png
HBO Max
public://topics-images/max.png
Threads
public://topics-images/threads.png
Alexa
public://topics-images/alexa.png
Kindle App
public://topics-images/kindle.png
Shopee
public://topics-images/shopee.png
Waze
public://topics-images/waze.png
Bilibili
public://topics-images/bili.png
Google Maps
public://topics-images/maps.png
Apple Music
public://topics-images/apple-music.png
Claude
public://topics-images/claude.png
TikTok
public://topics-images/tiktok.png
Xbox
public://topics-images/xbox.png
Tesla
public://topics-images/tesla.png
Chrome
public://topics-images/chrome.png
Google Calendar
public://topics-images/gcal.png
Google Home
public://topics-images/ghome.png
Google Meet
public://topics-images/meet.png
NotebookLM
public://topics-images/notebooklm.png
Reddit
public://topics-images/reddit.png
Assassin’s Creed
public://topics-images/ac.png
Mark Zuckerberg
public://topics-images/zuck.jpg
Meta
public://topics-images/meta.png
Meta AI
public://topics-images/meta-ai.png
Epic Games
public://topics-images/epic_games_logo.svg_.png
Unreal
public://topics-images/unreal_engine_logo-new_typeface-svg.png
Fortnite
public://topics-images/fortnite.png
DeepMind
public://topics-images/deepmind.png
Databricks
public://topics-images/databricks.png
ถ้า normalize
pittaya Sun, 01/14/2007 - 11:52
ถ้า normalize มันจะลดความซ้ำซ้อนของข้อมูลลง เขียนโปรแกรมก็ง่ายขึ้นระดับหนึ่ง อัพเดตข้อมูลก็ทำที่ table เดียว ไม่ต้องไปแก้หลายที่
แต่ในทางปฏิบัติแล้ว เพื่อ performance บางทีเค้าก็ยอมให้มีความซ้ำซ้อนได้บ้าง เพราะถ้าแยก table กันหมด เวลา query ออกมาทีนึงมันต้อง join เยอะ ซึ่งการ join เนี่ยมันช้า
อย่างที่ค
Ford AntiTrust Sun, 01/14/2007 - 15:18
อย่างที่คุณ pittaya บอกส่วนหนึ่งก็คือลดความซ้ำซ้อนข้อมูล แถมด้วยลดพื้นที่เก็บไปได้เยอะ ซึ่งการ join ก็มีหลายแบบ ถ้าใช้ทั่ว ๆ ไปแล้ว join ไม่กี่ table ก็ไม่เท่าไหร่ แต่ถ้ามาก ๆ ก็ต้องใช้ join แบบอื่น ๆ ไปแทน แล้วบางครั้งไอ้ที่ normalize มามันมีข้อมูลที่จำกัด ก็มักจะใช้ ENUM แทนการสร้าง Table ใหม่ ก็ลดจำนวน Table ลงไปได้มาก อะไรแบบนี้
แล้วเรื่องการเปลี่ยนแปลงข้อมูลนีี่สำคัญมาก ถ้าข้อมูลเรามีต้องเปลี่ยนแปลงบ่อย ๆ การ normalize จะช่วยลดเวลาการเปลี่ยนแปลงลงไปได้เยอะ ยิ่งข้อมูลใน table ที่มีการ เปลี่ยนแปลงบ่อย ๆ มีการอ้างอิงถึงอยู่เสมอ ๆ ก็ช่วยลดเวลาและจำนวนข้อมูลในการเปลี่ยนแปลงข้อมูลไปที่ตารางอื่นได้มาก เพราะมันแค่อ้างอิง PM Key เท่านั้นส่วนข้อมูลภายในก็เหมือนเดิม แถมลดความคับคั้งของข้อมูลที่จะเปลี่ยนแปลงด้วย เพราะคุณส่งแค่ PM Key แทนข้อมูลจริง ๆ ไปเปลี่ยนแปลงข้อมูลเท่านั้น
ถ้างานในฐานข้อมูลแค่ใส่ข้อมูลและแสดงข้อมูลออกมา มีการลบและเปลี่ยนแปลงน้อย นี่ไม่ต้อง normalize มากมายก็ยังทำงานได้ดี แต่ถ้าเมื่อใดมีการลบและเปลี่ยนแปลง เยอะ ๆ นี่คงต้องดูความเหมาะสมเข้าว่าด้วย
ซึ่ง normalize มักทำพร้อม ๆ กับการทำ Transaction เพราะช่วยให้ข้อมูลนั้นปลอดภัยเพิ่มขึ้นด้วย (เท่าที่ผมจับมาก็มีอยู่ร่วมกันตลอดเลย) ------------------------------------ Ford AntiTrust’s Blog; Blog DeveloperOnTheRoad = new SoloGeek.ThaiCyberPoint(’Ford AntiTrust’s Blog’);
ผมว่าเวลา
little-cow Sun, 01/14/2007 - 15:20
ผมว่าเวลาเขียนโปรแกรมอะไรซักอย่างที่มีการเก็บของข้อมูล การออกแบบฐานข้อมูลสำคัญที่สุดครับ... วันข้างหน้าจะได้ไม่ต้องมาปวดหัวที่หลัง....
------------------------------------- Little cow waiting the love โคน้อย คอยรัก...
หากมีการข
ม่อน Wed, 01/17/2007 - 11:57
หากมีการขยายขอบเขตของ database มันจะไม่ต้องมานั่งรื้อ ทำใหม่หมดไง
เหมือนข้อ
smilelovehappiness Thu, 01/18/2007 - 09:54
เหมือนข้อสอบวิชา database เลยแฮะ
การออกแบบ database ที่ดี table ควรจะนิ่ง คือ ถึงแม้จะมีการเปลี่ยนแปลงข้อมูลบ้าง (ไม่ใช่ใหม่หมด) ก็ไม่ควรจะต้องมีการ alter table เช่น เพิ่ม/ลบ column ควรจะทำแค่เพิ่ม/ลบ row เท่านั้นค่ะ ซึ่ง "ขยายออกไปทางขวา รวมทุกอย่างในตารางเดียว" มันขัดกับตรงนั้นสุดๆไง
เวลาอ.สอนออกแบบ table โดยค่อยๆทำตาม normalization form เริ่มจาก 1 แล้วแต่งไปเรื่อยๆ มันจะตลกๆ คือ แตกๆๆๆ มันออกไป สุดท้ายก็ต้องมายุบรวมกันอีกรอบ ตลกดี
เวลาผมออก
chaba_bkk Thu, 01/18/2007 - 10:19
เวลาผมออกแบบ DB ผมจะใช้หลักการแบบ Master Transaction แทน ระบบ normalization เพราะมันค่อนข้างเข้าใจ ยาก แต่ คำตอบ ที่ไ้ด้ จะเหมือน กัน ครับ
แต่บ้างครั้งถ้าต้องการ performance สูง ๆ ผม ก็ De- Normalization เหมือนกัน นะ
It's my life. Open your mind for the future.
ขอบคุณทุก
crucifier Thu, 01/18/2007 - 12:49
ขอบคุณทุกคนมากครับ แม้จะใช้เป็น ทำเป็น แต่ผมค่อนข้างเป็นคนที่....ไร้ภูมิ (?) คือเค้าสอนยังไงก็ทำยังงั้น ถึงเวลาต้องวิเคราะห์ผลดีผลด้อยก็ไปไม่รอด เหมือนกรณีนี้แหละครับ
หัวหน้าผมเค้าพอมีความรู้เรื่อง database บ้าง สไตล์เค้าก็จะออกทางขวาหมดครับ แล้วก็มาถกกันว่าทำไมผมทำอีกไปอีกแนวทาง ที่จริงเค้าก็แค่อยากรู้ว่าผมมีเหตุผลที่ดีหรือเปล่า ปรากฎว่าคิดหาเหตุผลไม่ออกครับ -*-"
อาจารย์ผม
noomz Thu, 01/18/2007 - 18:23
อาจารย์ผมเคยสอนไว้ว่าหัวใจของ Normalization คือ "อย่า split ตารางโดยไม่จำเป็น" ครับ และเค้าบอกว่าถ้าใครถามว่าจะ split ทำไมให้ตอบว่า เราจะแก้ปัญหาที hardware แก้ไม่ได้ก่อน ไม่รู้ว่าช่วยได้หรือเปล่า แต่ก็เป็นข้อมูลครับ ^^
แต่ผมมองด
panupong.c Thu, 01/18/2007 - 22:06
แต่ผมมองดูอีกมุม จากการใช้ OO ในการทำงานนะครับ
การ normalize เกินไปทำให้การ พัฒนา program ลำบากขึ้นมาก
ในเรื่องของความสัมพันธ์นี่แหละครับ เพราะหาก split ตารางมากเกินไปแล้ว
การจัดการข้อมูลจะยิ่งยากขึ้นไปอีก ผมใช้วิธี ออกแบบเป็น object และความสัมพันธ์
ในเชิง object ทั้งหมด แล้วถือว่า ฐานข้อมูลมีหน้าที่เพียงเก็บข้อมูลเท่านั้น ครับ