Ответы пользователя по тегу Базы данных
  • Онлайн база данных?

    zergon321
    @zergon321
    Вам отсоветовать СУБД? Это уже зависит тогда от масштабов предприятия. И да, в БД графические файлы можно сохранить при помощи бинарных типов данных, но там ограниченный размер, придется делать текстовые столбцы с указанием полных путей к файлам. Вам действительно нужно это?
    Ответ написан
  • Как реализовать внешний ключ в такой ситуации?

    zergon321
    @zergon321
    Сделать определение таблицы service_pay так:
    create table service_pay
    (
    service_id ...,
    transaction_id ... CHECK (transaction_id in (select id from transaction_table where type = ...)) #тип расходной транзакции
    foreign key (transaction_id) references transaction(id)
    );


    Или можно создать триггер на таблицу service_pay:
    DELIMITER //
    
    CREATE TRIGGER service_pay_bi
    BEFORE INSERT ON service_pay
    FOR EACH ROW
    BEGIN
    IF NEW.transaction_id IN (SELECT id FROM transaction_table WHERE type = ...) THEN #указать значение события дохода
    @last_error = "service_pay table can hold only the payment transactions";
    CALL non_existent(); #единственный способ прервать операцию
    END IF;
    END//


    А можно транзакции дохода и расхода хранить в разных таблицах, но в расходных добавить столбец service_id, тогда таблица service_pay не нужна. Если нужна выборка из всех транзакций - пользоваться UNION.
    SELECT ...
    FROM tbl_1
    UNION
    SELECT ...
    FROM tbl_2;
    Ответ написан
  • Как с помощью LOAD XML INFILE разобраться повторяющиеся теги и загнать их в Mysql?

    zergon321
    @zergon321
    Попробуйте процедуру со следующим кодом:
    DECLARE size INT UNSIGNED DEFAULT ExtractingValue(xml_file, "count(//item)");
    DECLARE counter INT UNSIGNED DEFAULT 1;
    
    WHILE counter <= size DO
        INSERT INTO your_table
        VALUES
        (
        ExtractValue(xml_file, "//item[$counter]/name"),
        ExtractValue(xml_file, "//item[$counter]/photo[1]"), #элементы нумеруются с 1, а не с 0; 
        ExtractValue(xml_file, "//item[$counter]/photo[2]") #и так для всех остальных фото
        );
        SET counter = counter + 1;
    END WHILE;
    Ответ написан
    Комментировать
  • С чего начать изучение БД?

    zergon321
    @zergon321
    Билл Карвин, "Программирование баз данных SQL", - про антипаттерны проектирования БД;
    Бен Форта, "SQL за 10 минут", - отсюда можно почерпнуть инфу о конструкциях, синтаксис которых в каждой СУБД одинаковый, а вот синтаксис чего-то посерьезнее, например, транзакций, хранимых процедур, индексов, курсоров и т.д. у каждой СУБД свой, ну стандартная библиотека функций тоже своя. Выбери СУБД и изучай ее.
    Викрам Васвани, "MySQL. Использование и администрирование", - если хочешь в MySQL, то книга - самое то; диаграммы сущность-связь можно делать в mysql-workbench и вроде даже заставлять сервер строить по ним БД.
    По Oracle я, честно сказать, вообще ничего не знаю.
    Ответ написан
    Комментировать