Часто на співбесідах або перед ними просять показати який-небудь свій код. Я хочу написати для цих цілей якийсь невеликий проект і розмістити його наприклад на GitHub.
Припускаю, що це буде невелике веб-додаток, що працює з базою даних. Але якщо не помиляюся то на GitHub не можна просто так взяти і залити базу даних. А хотілося б, щоб потенційний роботодавець міг отримати посилання на репозиторій і побачити приклад ефектів у програмному забезпеченні.
Скажіть будь ласка як можна залити бд на GitHub, щоб будь-яка людина при бажанні міг цілком зібрати робоче додаток? Або може є інші способи? Дякуємо!
заданий 15 Серпня '15 о 13:13
В принципі, в репозиторії Git можна зберегти що завгодно, в тому числі бінарні файли бази даних. Але Git зберігає цілі файли, а не дельти. І тим більше він не зможе зберігати зміни в тому вигляді, в якому його сприймають СУБД. Тобто
Знайти поле X, записати в нього значення Y
- зміна в кілька байт.
- стара версія видаляється
Повністю видалити файл і замінити його новим.
- зміна в багато мегабайт
- всі версії зберігаються.
Таким чином, якщо ви будете зберігати в коммітов послідовно кілька станів БД, то кожне буде цілком і назавжди збережено в репозиторії. Це дуже швидко роздує його розміри.
- написати SQL / DDL код, не започатковано базу даних в тому вигляді, в якому вона потрібна для роботи програми
- Написати інструкцію з встановлення або скрипт для автоматизації установки (плюс в очах роботодавця)
- Опублікувати в репозиторії цей код і документацію (ну і сам додаток).
Спосіб, який буде зручний навіть в production, і який виставить вас у вигідному світлі, будучи застосованим в демо:
- Створюєте дамп структури бази даних. Як вже було сказано, це текстовий файл. У структурі бази має сенс вказати версію цієї структури (наприклад, створити уявлення з одним селект однієї константи).
- Створюєте дамп тестового набору даних. Теж текстовий файл, з INSERT'амі.
- (За бажанням) Створюєте скрипт, відновлювальний стару структуру бази до нової, на підставі інформації про версії структури.
- Створюєте програму, якимось чином має установки сервера і ім'я БД. При запуску програма підключається до сервера, перевіряє версію сервера, дивиться чи є БД. Якщо стара версія сервера - відкланюється. Якщо немає бази - пропонує створити (за допомогою скрипта, якщо обрана галочка внесення в базу тестових даних, то слідом вносяться тестові дані). Якщо стара версія структури - пропонує оновити (за допомогою скрипта).
- Далі програма працює як зазвичай.
При веб-розробці, "програма" це швидше за все сторінка в "/ 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