Як правильно опублікувати проект, що містить базу даних stack overflow російською

Часто на співбесідах або перед ними просять показати який-небудь свій код. Я хочу написати для цих цілей якийсь невеликий проект і розмістити його наприклад на GitHub.

Припускаю, що це буде невелике веб-додаток, що працює з базою даних. Але якщо не помиляюся то на GitHub не можна просто так взяти і залити базу даних. А хотілося б, щоб потенційний роботодавець міг отримати посилання на репозиторій і побачити приклад ефектів у програмному забезпеченні.

Скажіть будь ласка як можна залити бд на GitHub, щоб будь-яка людина при бажанні міг цілком зібрати робоче додаток? Або може є інші способи? Дякуємо!

заданий 15 Серпня '15 о 13:13

В принципі, в репозиторії Git можна зберегти що завгодно, в тому числі бінарні файли бази даних. Але Git зберігає цілі файли, а не дельти. І тим більше він не зможе зберігати зміни в тому вигляді, в якому його сприймають СУБД. Тобто

Знайти поле X, записати в нього значення Y

  • зміна в кілька байт.
  • стара версія видаляється

Повністю видалити файл і замінити його новим.

  • зміна в багато мегабайт
  • всі версії зберігаються.

Таким чином, якщо ви будете зберігати в коммітов послідовно кілька станів БД, то кожне буде цілком і назавжди збережено в репозиторії. Це дуже швидко роздує його розміри.

  1. написати SQL / DDL код, не започатковано базу даних в тому вигляді, в якому вона потрібна для роботи програми
  2. Написати інструкцію з встановлення або скрипт для автоматизації установки (плюс в очах роботодавця)
  3. Опублікувати в репозиторії цей код і документацію (ну і сам додаток).

Спосіб, який буде зручний навіть в production, і який виставить вас у вигідному світлі, будучи застосованим в демо:

  1. Створюєте дамп структури бази даних. Як вже було сказано, це текстовий файл. У структурі бази має сенс вказати версію цієї структури (наприклад, створити уявлення з одним селект однієї константи).
  2. Створюєте дамп тестового набору даних. Теж текстовий файл, з INSERT'амі.
  3. (За бажанням) Створюєте скрипт, відновлювальний стару структуру бази до нової, на підставі інформації про версії структури.
  4. Створюєте програму, якимось чином має установки сервера і ім'я БД. При запуску програма підключається до сервера, перевіряє версію сервера, дивиться чи є БД. Якщо стара версія сервера - відкланюється. Якщо немає бази - пропонує створити (за допомогою скрипта, якщо обрана галочка внесення в базу тестових даних, то слідом вносяться тестові дані). Якщо стара версія структури - пропонує оновити (за допомогою скрипта).
  5. Далі програма працює як зазвичай.

При веб-розробці, "програма" це швидше за все сторінка в "/ admin".

відповідь даний 18 Серпня '15 о 12:19

Відповідь дуже сильно залежить від платформи, яку ви використовуєте.

Якщо ви (випадково) пишете на C # /. NET, то на гітхаб можна просто так взяти і залити базу даних - mdf / ldf файли з підключенням в додаток через AttachDbFileName в рядку з'єднання. У заданих рамках - викласти кудись приклад свого коду, який можна буде забрати / показати / запустити без зайвих рухів тіла - це більш ніж підходяще рішення.

Якщо ви при цьому ще й використовуєте Entity Framework Code First - то ваше додаток і так вже вміє створювати базу даних, і нічого нікуди заливати не потрібно.

Про всяк випадок варто використовувати ім'я сервера (localdb) \ v11.0 в обох варіантах - цей інстанси з великою ймовірністю є на машині з Visual Studio, і додаток можна буде запустити відразу після скачування початкових кодів.

відповідь дан 15 Серпня '15 о 19:24

База даних може бути побудована за стандартом JSON-LD. Фізично це звичайні директорії ( "набори даних") і json-ки в них. Відповідно, відмінно буде працювати прямо в склонірованном репо.

відповідь дан 17 Березня о 11:02