Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 10
1

По структуре БД

12.12.2014, 21:25. Просмотров 307. Ответов 5
Метки нет (Все метки)

Всем доброго времени суток.
Сегодня мне задали вопрос, на который я не знаю ответа.
Вопрос такой: есть, скажем, социальная сеть. Там есть пользователи, у них есть фотографии, на каждой фотке может быть отмечено несколько человек. Как организовать структуру базы данных?
Я не придумала ничего лучше, чем хранить список пользователей, относящихся к данной фотке, в текстовом файле на сервере, а ссылку на файл хранить в БД. Но, кажется, это не то, что было нужно.
Ну да, я чувствую, что должно быть более элегантное решение.. тем более что мне сказали, что это стандартная задача.
Кто что посоветует?
И кстати, действительно ли это моветон - хранить какие-либо списки в файле, когда есть БД?
(Просьба тапками не бить, раньше работала программистом PHP, но начальство никогда мой код не смотрело, ему главное было чтоб работало.)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2014, 21:25
Ответы с готовыми решениями:

Изображение в структуре
Пишу Лабу, необходимо в структуре добавить фотографию, как это осуществить, приложение консольное.

Сортировка в структуре
Нужно считать в структуру информацию из файла, и отсортировать по зарплате. В файле записана...

string в структуре
Добрый день. Вот такой вопрос , как правильно надо составлять структуры со string'ом в WIN forms и...

О структуре фреймворка
Приветствую. Разрабатываю свою фреймворк just for fun. Имеется такая структура: System —...

5
182 / 182 / 83
Регистрация: 18.02.2014
Сообщений: 865
13.12.2014, 11:26 2
Зачем текстовым файлом усложнять себе жизнь?
Есть фото, есть x,y . Пользователь выберает на фото место где обозначен он(к примеру). X и Y, через ajax/js/jqyery куча вариантов как это сделать, записываются в БД. После чего когда будет запрос к этой фотке, выведутся X и Y, где будет всё отмеченые лица.
0
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 10
13.12.2014, 13:54  [ТС] 3
xpoince, может я плохо сформулировала вопрос. В том-то и дело, что у каждого пользователя образуется список фоток других пользователей, на которых он отмечен. Или - про ту же инфу можно сказать, что у каждой фоты образуется список пользователей, отмеченных на ней. Вопрос именно в том, как хранить в БД эти списки.
В целом предложенное мной кондовое решение выглядит так: таблица пользователей в БД (т е обычная таблица типа 'ID', 'name', ...), там же в таблице лежит ссылка на директорию, в к-рой хранятся фотки данного юзера. Для каждого юзера своя директория - так решается вопрос с тем, как хранить список фоток, принадлежащих юзеру, заодно и сами фотки.
Но есть еще список фоток, на к-рых он отмечен - и это по своей природе список, не число, не строка, не директория. Я предлагаю просто записать его в текстовый файл и ссылку на файл хранить в той самой таблице пользователей. Или - альтернативно - к каждой фотке, лежащей в директории на сервере, прилагать список-файл людей, отмеченных на ней.
Вот так у меня получилось, имея мощную базу данных, уйти от нее к пещерным методам хранения инфы в текстовых файлах (и при необходимости вытаскивать ее из этих файлов средствами php). Все потому, что я не могу придумать, как хранить в БД тип данных "список".
Что-то здесь не так ведь!
0
182 / 182 / 83
Регистрация: 18.02.2014
Сообщений: 865
13.12.2014, 14:09 4
Ну я бы не парелся и организовал всё в БД
user - пользователи
contnt - фото и всякое
photo - ид с фотками и какиминебуть пораметры если надо
photo_user - тут хранил бы ID пользователя и ID фотки( content)
photo_user_mark - тут хранилбы ID пользователя, чья фотка, ID пользователя который указан на фото и ID фото

и всё ясно понятно )
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
13.12.2014, 14:16 5
Цитата Сообщение от newblonde Посмотреть сообщение
Все потому, что я не могу придумать, как хранить в БД тип данных "список".
любая таблица в реляционной базе данных и есть список. Так что нужно меньше придумывать, там где все уже придумано.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE TABLE `user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(128) NOT NULL,
  `email` VARCHAR(128) NOT NULL,-- и т.д.
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='список людей';
 
CREATE TABLE `photo` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `url` VARCHAR(255) NOT NULL,
  `owner_id` INT(11) NOT NULL COMMENT'владелец фотографии',
  PRIMARY KEY (`id`),
  KEY `owner_fk_idx` (`owner_id`),
  CONSTRAINT `owner_fk` FOREIGN KEY (`owner_id`)REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='список фотографий';
 
CREATE TABLE `mark`(
  `photo_id` INT(11) NOT NULL COMMENT 'фотография',
  `marked_people_id` INT(11) NOT NULL COMMENT 'отмеченный на фотографии человек',
  PRIMARY KEY (`photo_id`,`marked_people_id`),
  CONSTRAINT `photo_fk` FOREIGN KEY (`photo_id`) REFERENCES `photo` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `marked_people_fk` FOREIGN KEY (`marked_people_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='список фото с отмеченными на них людьми';
0
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 10
13.12.2014, 14:52  [ТС] 6
ads, спасибо за подробнейший ответ!
Действительно, вот оно наконец элегантное решение.
Да, мне стыдно, но моя проблема была в незнании такой прекрасной вещи, как foreign key.
Спасибо, что познакомили меня с ней )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2014, 14:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

ошибка в структуре
struct S{ char F; double n; }; Student *get_mem(); int _tmain(int argc, _TCHAR* argv) {...

Сортировка в структуре
Структура: struct Worker { string Name; int Year; ...

Поиск в структуре
Есть программа с информацией о работниках. Как реализовать возможность поиска по фамилии, имени,...

выборка по структуре
Делаю выборку по условию, но в новую структуру заносятся все элементы старой (не по условию) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.