1. SQL / Говнокод #17451

    −164

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    CREATE TABLE NEWS (
     ID INT NOT NULL AUTO_INCREMENT
     , NEWS_NAME VARCHAR(300) NOT NULL
     , NEWS_SHORT_NAME VARCHAR(80) NOT NULL
     , NEWS_TEXT VARCHAR(40000) NOT NULL
     , NEWS_SHORT_TEXT VARCHAR(400) NOT NULL
     , NEWS_IMG_1 VARCHAR(60)
     , NEWS_IMG_2 VARCHAR(60)
     , NEWS_IMG_3 VARCHAR(60)
     , NEWS_IMG_4 VARCHAR(60)
     , NEWS_IMG_5 VARCHAR(60)
     , NEWS_IMG_6 VARCHAR(60)
     , NEWS_IMG_7 VARCHAR(60)
     , NEWS_IMG_8 VARCHAR(60)
     , NEWS_IMG_9 VARCHAR(60)
     , NEWS_IMG_10 VARCHAR(60)
     , NEWS_DATE DATE
     , PRIMARY KEY (ID)
    );

    Таблица новостей из одной очень крутой и никому неизвесной CMS на java.
    Сейчас автор думает над тем что делать если пользователяю надо будет загрузить 11 изображений, варианты: увеличить количество полей до 15, ограничить количество изображений на новость.

    Запостил: lisiy50, 15 Января 2015

    Комментарии (45) RSS

    • ...а в итоге автор просто сделает поле TEXT и будет там через запятую хранить.

      Этот подход носит название "антиреляционная база данных" и распостранен у тех кто ни одной книжки по БД не прочитал, а сайты уже делать научился
      Ответить
      • Говорят, что в зелёном синем слонике (не в том, что PHP, а в том, что Postgre) ещё массивы есть...
        Ответить
        • Есть. Даже, прости господи, многомерные. И енумы есть (которые внутри все равно реализованы как отдельная таблица).

          Я могу понять человек использует массивы вместо one-to-many (с натяжкой, но могу). Но вот что ел автор NEWS_IMG_10 я не знаю
          Ответить
        • в mysql тоже вроде как бы есть что то подобное. Нет ошибся только Enum есть
          Ответить
          • А MariaDB поставляется ещё с хранилищем... (о, боже!) графов:
            http://openquery.com.au/graph/doc
            Ответить
    • Таблица с idшниками новостей и хешами картинок?
      Ответить
      • уралми скорее всего.

        Наверняка там написано что-то типа "/images/novosti/foo.jpg".

        А когда images переименуют в pictures, автор будет в неловком конфузе
        Ответить
        • будем оптимистами, думаю там все таки лежат просто названия файлов, без пути
          Ответить
          • Позвольте мне быть пессимистом и думать что там лежит такая строка:
            <img src="/pics/pupkin.jpg" alt="Х.З. Пупкин">
            Ответить
        • /images/novosti/ вынести в конфиги.
          foo_n.jpg - хешами именовать и в хранилище.
          Ответить
          • Понятно. У Вас есть еще какие-то советы по оптимизации данной архитектуры, или Вы считаете что если в NEWS_IMG_8 лежит "1f3870be274f6c49b3e31a0c6728957f" а файл называется "1f3870be274f6c49b3e31a0c6728957f.pn g", то система в целом неплоха?

            Кстати, что Вы думаете про поле VARCHAR(60) для хешей?
            Ответить
            • Всякие NEWS_IMG_N не нужны.
              Нужно одно поле с news_id.
              По нему вяжемся с отдельной таблицей у которой поля: news_id и img_hash.
              Каждой новости соответсвует множество картинок.
              Ответить
              • Разумеется. Это называется "первая нормальная форма" и как-бы must have для любой таблицы (кроме warehouse/olap, но это отдельная история). Просто смешно что все обсуждают значение поля NEWS_IMG_10 тогда как гавном явлется сам факт его наличия.
                Ответить
                • я автор данного шедевра!)
                  код писался для тестирования мульти загрузки фалов на сервер xD
                  Ответить
                  • Загрузка файлов на сервер не реализуема без неумения пользоваться реляционными бд
                    Ответить
                    • We don't need no education!
                      Ответить
                      • Знаете анекдот про двойное отрицание?
                        Ответить
                        • Не уверен, что не знаю, но готов узнать.
                          Ответить
                          • Лекция по филологии. Старый профессор рассказывает:
                            - В некоторых языках мира двойное отрицание означает согласие. В других, двойное отрицание так и остается отрицанием, но нет ни одного языка в мире, в котором двойное согласие означает отрицание.
                            Голос с задней парты:
                            - Ну да, конечно.
                            Ответить
                            • А ведь есть языки, в которых согласие и отрицание означают одно и то же:
                              • Чайник долго закипает.
                              • Чайник долго не закипает.
                              Ответить
                              • >А ведь есть языки, в которых согласие и отрицание означают одно и то же:
                                Ты не закипятил чайник?
                                • Да, не закипятил
                                • Нет, не закипятил
                                Ответить
                      • Let the motherfucker learn
                        Learn, motherfucker
                        Learn
                        Ответить
            • VARCHAR(60) у меня генератор хеша выдает 60 символов!)
              Ответить
          • Если уж хэш, тогда CHAR(сколькотам), нет смысла каждый раз считать длину значения
            Ответить
    • Я бы сомневающемуся автору предложил решить задачу уникальности картинок в каждой новости.
      Ответить
      • Ему было предложено решить вопрос со сменой порядка изображений, пока ждем...
        Ответить
        • > вопрос со сменой порядка изображений
          А в чем проблема? Заселектит все, поменяет порядок и зальет обратно одним update'ом.
          Ответить
          • ты только что выполнил за него работу по написанию очередного говнокода
            Ответить
            • > по написанию
              Только по проектированию. Писать сам будет.
              Ответить
        • добавит поля ordrer_img1,ordrer_img2,ordrer_img3 к гадалке не ходи
          Ответить
    • Ресурс несет свет в жизни людей, автор сия шедевра психанул и заказал целых 2 книги по mysql.
      Спасибо говнокод!
      Ответить
      • угу заказал!)
        Ответить
      • Ну если это книги Поля Дюбуа то еще ладно, но могут быть ведь и такие книги что лучше и не читать. Хотя какой это свет: так, светик. Свет был бы если бы он перешел на постгрю.
        Ответить
        • "mysql для проффессионалов"
          где toad для постгри? какого хера там настолько убогий коробочный инструмент, отсасывающий даже oracle sql developer?
          Ответить

          • Я использую 0xDBE или его же ввиде планига к идее или пайшарму, но вообще да, IDE в комплекте там не сахар. С другой стороны, по сравнению с Visual Studio (SSDT) и тоад сосёт, и вообще все сосут
            Ответить

    Добавить комментарий