הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   איזה סוג שדה? (https://hosts.co.il/forums/showthread.php?t=72743)

dor77 17-03-09 12:08

איזה סוג שדה?
 
שלום,
אני בונה מערכת כלשהי ב sql ואני רוצה לאחסן כתובת (כתובת אתר), איזה סוג? text? או שזה בזבוז של מאשבים?
איזה סוג הכי מאתים?
אותה שאלה, איזה סוג מתאים לשדה שיאחסן status, כלומר כן או לא.

אשמח לתשובות, תודה.

vadimg88 17-03-09 12:13

לגבי הכתובת...אם זה מגיע עד 255 תווים אז VARCHAR יספיק.
לגבי ערך של 1 או 0 אני בדרך כלל שם tinyint

dor77 17-03-09 12:16

תודה על התשובה המהירה, varchar יאחסן כתובת בלי בעיה? לא לעשות לו הגבלה כלשהי?
כתובת לא תיהיה יותר ארוכה מ20 תווים, 255 יותר מדי אני חושב, להשאיר את זה ככה?
ומה זה tinyint למה הוא משמש בעיקר?
אני דווקא חשבתי לכתוב בטקסט "yes" "no" אבל במחשבה שנייה, 1 או 0 נשמע טוב יותר, השאלה היא מה זה tinyint.

תודה רבה!

vadimg88 17-03-09 12:28

tinyint לוקח בייט אחד ויכול לאחסן עד 128 או 127 לא זוכר.

אם זה רק 20 תווים אז תשתמש ב char(20)

dor77 17-03-09 12:50

לבסוף עשיתי כך:

http://img14.imageshack.us/img14/3618/sql.png

מצטער שצינזרתי חלק..
את הכתובות שאני אאחסן הגבלתי ל 30, כתובת אינרטנט לא אמורה להיות יורת ארוכה מ30 תווים.
ואת הסטטוס, ל3 תווים, "yes" או "no".
עשיתי בסדר?

פעם ראשונה שאני עושה הגבלה ומשתמש ב varchar, תמיד עשיתי text ובלי הגבלה.
תודה.

vadimg88 17-03-09 12:53

בנוגע ל ID אני מניח שלא יהיו לך יותר מ 400,000 רשומות לכן עדיף שתתן לזה mediumint(8)
ה status יכול להיות tinyint(1) ואז לקחת בייט אחד, לעומת ה varchar 3 שננת שלוקח 4 בייטים.
השאר נראה בסדר.

אני משתמש בדרך כלל ב utf8_general_ci

dor77 17-03-09 13:10

בעיקרון אני מפעיל את זה עכשיו על wamp, כי אני רוצה לנסות לבנות מערכת כלשהי, לכן ברגע זה, זה לא ממש משנה.
utf8_general_ci תומך בכל השפות?
בphpmyadmin למשל, אם הוכנס עברית אני יראה עברית? כרגע אני רואה ג'יבריש.

בפלט, אני רואה מה שהוכנס, אני לא רואה ג'יבריש.

תודה לך!

vadimg88 17-03-09 13:29

כן אם הכל מוגדר ל utf8_general_ci ואתה שומר הכל ב UTF8 אז אתה תראה עברית.

AlmogBaku 17-03-09 15:41

למה tinyint??

PHP קוד:

ENUM('y','n'


vadimg88 17-03-09 15:57

אכן, בשני המקרים זה ישתמש ב 1 בטים.

החסרון בשימוש ב y, n זה שאם תרצו להשוות משהו או לבדוק אם זה הוגדר או שווה ל 1 או 0 צריך יהיה לעשות

if $something == 'y' או if $something == 'n'

במקרה של tinyint זה פשוט לבדוק אם זה הוגדר ל 1 או 0 אז

if $something

במידה וה enum יכיל במקום y,n ערכים 0,1 אז זה יהיה בידיוק אותו דבר.

dor77 17-03-09 16:17

רגע, למה להסתבך, למה פשוט שאני לא יעשה varchar(1).
יהיה "y" ו "n", גם רעיון לא?

ותודה על הקידוד.

vadimg88 17-03-09 16:29

לא. varchar לוקח 4 בטים. זה הכל תלוי במה אתה רוצה לעשות. אם אתה הולך לשמור ערך של כן/לא אני אישית משתמש ב tinyint 1 ושומר 1 או 0. הכי פשוט.

dor77 17-03-09 16:46

רציתי לעשות את זה אבל אמרת שהוא שומר מ 127 עד 128 או משהו כזה, התבלבלתי אז החלטתי לעזוב את זה.

vadimg88 17-03-09 18:24

מ 0 עד 128

AlmogBaku 17-03-09 19:28

פשוט קח את זה כעובדה- כשיש בחירה בין כמה אפשרויות מוגבלות עושים ENUM

vadimg88 17-03-09 20:55

נכון. תלוי באפשרויות. אם זה אפשרויות של כן/לא אז אני אישית משתמש ב tinyint ואת האמת גם רוב המערכות הפופולאריות כיום בשוק.

dor77 18-03-09 14:55

אוקיי,
תודה לכולם, במיוחד לך ואדים, תמיד עוזר (:


כל הזמנים הם GMT +2. הזמן כעת הוא 20:35.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ