Хранение ссылок на скачивание

Тема в разделе "Базы данных", создана пользователем serjinio, 14 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    собственно есть сущность типа фильм, программа,клип,песня и тп..
    как организовать правильное хранение ссылок на скачивание к каждой сущности ..ну типа
    фильм..Почтальон всегда звонит дважды
    Код:
    RapidShare.com
    [url]http://rapidshare.com/files/69150151/Postman.part01.rar[/url]
    ...................................
    [url]http://rapidshare.com/files/69150157/Postman.part04.rar[/url]
    
    Depositfiles.com
    [url]http://depositfiles.com/files/2341757[/url]
    ....................................
    [url]http://depositfiles.com/files/2341753[/url]
    
    Letitbit.net
    [url]http://letitbit.net/download/3a1976525915/Postman.part09.rar.html[/url]
    .......................................
    [url]http://letitbit.net/download/769665220261/Postman.part15.rar.html[/url]
    и т.д и т.п..
     
  2. jen140

    jen140 Писатель

    Регистр.:
    3 июл 2007
    Сообщения:
    1
    Симпатии:
    1
    create table names (id int,name char(50));
    create table rapids (id int, idx int,link char(50), Foreign Key (idx) references names(id));
    create table deposit (id int, idx int,link char(50), Foreign Key (idx) references names(id));
    create table letit (id int, idx int,link char(50), Foreign Key (idx) references names(id));

    insert into names ( 1, "Pochtalion");
    inser into rapids (1,1,"http://");
    ...
     
    serjinio нравится это.
  3. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    INSERT INTO `rapids` VALUES ( 1, 1, 'http://rapidshare.com/files/69150151/Postman.part01.rar' )
    ........................
    INSERT INTO `rapids` VALUES ( 4, 1, 'http://rapidshare.com/files/69150157/Postman.part04.rar' )


    т.е правильно ли я понял, что для каждого сервиса создаем отдельную таблицу,организовываем связь один ко многим с таблицей names id int -->idx int (таблиц сервисов)...

    ставим полям idx int (таблиц сервисов) INDEX - чтобы ускорить выборку.... и JOINами делаем выборку ...
    какие еще могут быть нюансы...
     
  4. abzac

    abzac Создатель

    Регистр.:
    25 окт 2008
    Сообщения:
    24
    Симпатии:
    3
    Можно выкинуть из rapids,deposit ... столбец id. Ссылки все равно уникальны, столбец ничего не определяет и не соответвует 2-ой формы нормализации.
    Нюнсы: при добавлении нового файлообменника надо изменять код поиска ссылок.
     
  5. a_smith

    a_smith

    Регистр.:
    4 дек 2008
    Сообщения:
    261
    Симпатии:
    54
    Первичный идентификатор ID служит не только для уникальности, но и для организации связи с другими таблицами, связывать же "уникальную" ссылку с такой же в другой таблице - безумство
     
  6. pavel012007

    pavel012007

    Регистр.:
    12 мар 2008
    Сообщения:
    210
    Симпатии:
    117
    Таблица dld:
    id - ключ, уникальное
    name - содержательное название (название фильма, альбома и т.п.)
    descr - подробное описание сущности
    id_t - ссылка на tp.id (тип сущности)
    id_h - ссылка на h.id (id файлообменника из таблицы h)
    ref - собственно ссылка (например "http://rapidshare.com/files/69150151/Postman.part01.rar")

    Таблица h названий файлообменников (справочник:(
    id - ключ, уникальное
    name - название файлообменника

    Таблица tp типов сущностей (справочник:(
    id - ключ, уникальное
    name - название типа сущности ('фильм', 'музыка', и т.п)

    По известному id файлообменника таблицы h (например, в h: 1 - rapidhare.com) одним несвязанным с h запросом легко вытащить из dld все ссылки данного файлообменника (с id_h=1).
     
  7. zerdek

    zerdek

    Регистр.:
    29 ноя 2007
    Сообщения:
    346
    Симпатии:
    50
    тож вариант... но неоправданно сложный. его желательно чуток подправить.

    нам будет достаточно трех таблиц:
    create table names (nid int,name char(50)); //фильмы, их характеристики и т.д.
    create table service (sid int,sname char(50)); //названия сервисов: рапидшара и т.д.
    create table links (id int, nid int, sid int,link varchar(200) );
     
  8. pavel012007

    pavel012007

    Регистр.:
    12 мар 2008
    Сообщения:
    210
    Симпатии:
    117
    Поясните, пожалуйста чем конкретно это "проще" по сравнению с предложенными решениями? И хочется увидеть описание структуры таблиц.
     
  9. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Сделать я то сделал.. только больно геморно добавлять ссылки в админке..реализовал так ..из выпадающего списка выбираем сервис хранения ..затем десять полей ,где в каждое поле вводим одну ссылку (архив №1 ) во второе (архив №2 ) и тд ...что-то долго ..может плюнуть и сделать только одно поле где блоком хранить ссылки на фильм для каждого сервиса?
     
  10. pavel012007

    pavel012007

    Регистр.:
    12 мар 2008
    Сообщения:
    210
    Симпатии:
    117
    ИМХО, интерфейс может быть мало связан с реализацией хранения информации в таблицах базы. Потому что там критерии другие - прежде всего скорость выполнения выборки нужных данных. А интерфейс можно сделать не привязанным к структуре таблиц - чтоб было удобно пользоваться. Результат ввода данных из интерфейса уже раскидывать по конкретным таблицам.
     
Статус темы:
Закрыта.