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

הוסטס - פורום אחסון האתרים הגדול בישראל (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 אז זה יהיה בידיוק אותו דבר.


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

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