Типы данных в MySQL

Статус
Закрыто для дальнейших ответов.

Yourick

Новичок
Регистрация
19.10.2010
Сообщения
1
Здравствуйте! У меня такая задача: нужно для универа создать сайт турагенства. Я с дизайном вроде как закончил, и начал ковырять Apache и создавать базу данных для стран. У каждой страны у меня есть свое детальное описание:
IDСтраны
Столица
Язык
Валюта
Население
Климат
Местная кухня
Религия
Полезные телефоны( типа 123-45-67 - Посольство России в Уругвае))
Часовой пояс
Таможенный контроль
фото страны (3шт)
У меня такой вопрос: какие типы данных должны быть у каждого пункта из описания?! И ка хранить в базе данных фотографии в формате JPEG(или там просто расположение этих картинок вводишь)?
 

minority

generator randomly php
Регистрация
02.05.2010
Сообщения
443
Фотографии в формате JPEG хранить в базе нужно ссылками или именами после формировать ссылки.
IDСтраны - int unsigned not null auto_increment primary key
Столица - char(20) not null
Язык - char(20) not null
Валюта - char(20) not null
Население - int not null
и тд, все очень легко.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
IDСтраны INT
Столица VARCHAR(32)
Язык VARCHAR(20)
Валюта VARCHAR(20)
Население INT - в тысячах человек
Климат TEXT
Местная кухня TEXT
Религия TEXT
Полезные телефоны( типа 123-45-67 - Посольство России в Уругвае)) TEXT
Часовой пояс INT
Таможенный контроль TEXT
фото страны (3шт)3 x VARCHAR(20)
В базе храните имя фото. Папку, где хранятся фото, подставляете при выводе.
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Если для универа, тут нужна совсем бредовая оптимизация которая впринципе не нужна.
Язык и валюта могут быть одинаковые у разных стран, их можно вынести в другие таблицы, и связвать по id нужную страну и параметр (язык/валюта). Думаю с этим методом вы знакомы.

Можно чуть больше извратиться, и реализовать частично EAV модель(Wikipedia, Habrahabr).

То есть в вашем случае так:
таблица countries. id - ид страны.
Таблица countries_field_names - хранит названия атрибутов стран(полей).
структура: fd_name_id [id]: int. fd_name: varchar(128). (fd_name - field_name)
Таблица countries_data - хранит данные, чистый текст
структура: data_id [id]: int. data: text.
Таблица countries_data_linking - связывает 3 предыдущих таблицы.
структура: dl_id [id]: int. country: int (страна). fd_name_id: int (countries_field_names.fd_name_id). data_id: int (countries_data.data_id)

Теперь что бы получить страну с нужными полями нам нужен такой запрос:
Код:
SELECT c.id id, cd.data text, fd.name title
FROM countries as c, countries_field_names as fd, countries_data cd, countries_data_linking cdl
WHERE c.id = cdl.country AND cd.data_id = cdl.data_id AND fd.fd_name_id = cdl.fd_name_id AND
c.id = 5
В конце можно добавить ORDER и добавить соответствующий атрибут в одну из таблиц(countries_data_linking если порядок полей индивидуальный для всех полей или в countries_data, если общий для всех) Я тут намеренно пропустил пару пунктов, но думаю в ходе работы вы с ними разберетесь, и лучше поймете суть.

Можно конечно возразить, что для такого простого сайта это неуместно, но это же не для реально работающего проекта :happy:
А вам за это будет плюс(хотя зависит от преподавателя, нужно сразу разъяснить, что в реальном таком простом преокте, проще использовать одну табличную структуру проекта)

p.s забыл добавить, сделайте все ваши ID не только int но еще и unsigned. Это увеличит лимит на записи в два раза. Вряд ли количество записей достигнет такого размера, но логичнее было бы сделать так, это тоже плюс.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ