/* CAIO CÉSAR DIOGO DOS SANTOS C@IO.PRO.BR - 2022-07-26 USER VIEW CREATION AND DOCUMENTATION SAMPLE */ CREATE SCHEMA UserView GO EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA AS VIEWS DO SISTEMA.', @level0type = 'SCHEMA', @level0name = 'UserView' GO CREATE OR ALTER VIEW UserView.EstabelecimentoDetalhe WITH ENCRYPTION, SCHEMABINDING AS SELECT UF.UFSigla [Core.UF.UFSigla], UFNome [Core.UF.UFNome], C.CidadeNome [Core.Cidade.CidadeNome], E.EstabelecimentoNome [Core.Estabelecimento.EstabelecimentoNome], E.EstabelecimentoEndereco [Core.Estabelecimento.EstabelecimentoEndereco], E.EstabelecimentoLat [Core.Estabelecimento.EstabelecimentoLat], E.EstabelecimentoLong [Core.Estabelecimento.EstabelecimentoLong], P.ParametroValue [Core.Parametro.ParametroValueTipoEstabelecimento] FROM Core.UF JOIN Core.Cidade C ON C.UFSigla = UF.UFSigla JOIN Core.Estabelecimento E ON E.CidadeId = C.CidadeId JOIN Core.Parametro P ON P.ParametroId = E.ParametroIdTipoEstabelecimento GO EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA OS DETALHES DOS ESTABELECIMENTOS REGISTRADOS NO SISTEMA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'EstabelecimentoDetalhe' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O NOME DA CIDADE.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'EstabelecimentoDetalhe', @level2type = 'COLUMN', @level2name = 'Core.Cidade.CidadeNome' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O ENDEREÇO COMPLETO DO ESTABELECIMENTO.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'EstabelecimentoDetalhe', @level2type = 'COLUMN', @level2name = 'Core.Estabelecimento.EstabelecimentoEndereco' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA A LATITUDE DO ESTABELECIMENTO.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'EstabelecimentoDetalhe', @level2type = 'COLUMN', @level2name = 'Core.Estabelecimento.EstabelecimentoLat' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA A LONGITUDE DO ESTABELECIMENTO.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'EstabelecimentoDetalhe', @level2type = 'COLUMN', @level2name = 'Core.Estabelecimento.EstabelecimentoLong' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O NOME DO ESTABELECIMENTO', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'EstabelecimentoDetalhe', @level2type = 'COLUMN', @level2name = 'Core.Estabelecimento.EstabelecimentoNome' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O TIPO DO ESTABELECIMENTO.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'EstabelecimentoDetalhe', @level2type = 'COLUMN', @level2name = 'Core.Parametro.ParametroValueTipoEstabelecimento' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O NOME DO ESTADO.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'EstabelecimentoDetalhe', @level2type = 'COLUMN', @level2name = 'Core.UF.UFNome' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA A SIGLA DO ESTADO.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'EstabelecimentoDetalhe', @level2type = 'COLUMN', @level2name = 'Core.UF.UFSigla' GO CREATE OR ALTER VIEW UserView.AlbumDetalhe WITH ENCRYPTION, SCHEMABINDING AS SELECT A.ArtistaNome [Musica.Artista.ArtistaNome], A.ArtistaFotoURL [Musica.Artista.ArtistaFotoURL], A.ArtistaSpotifyURL [Musica.Artista.ArtistaSpotifyURL], C.AlbumNome [Musica.Album.AlbumNome], C.AlbumAno [Musica.Album.AlbumAno], C.AlbumCapaURL [Musica.Album.AlbumCapaURL], M.MusicaNome [Musica.Musica.MusicaNome], M.MusicaOrdem [Musica.Musica.MusicaOrdem], M.MusicaDuracao [Musica.Musica.MusicaDuracao], P.ParametroValue [Core.Parametro.ParametroValueGeneroMusical] FROM Musica.Artista A JOIN Musica.ArtistaAlbum AA ON AA.ArtistaId = A.ArtistaId JOIN Musica.Album C ON C.AlbumId = AA.AlbumId JOIN Musica.Musica M ON M.AlbumId = C.AlbumId JOIN Musica.GeneroMusicalAlbum GA ON GA.AlbumId = C.AlbumId JOIN Core.Parametro P ON P.ParametroId = GA.ParametroIdGeneroMusical AND p.ParametroKey = 'GeneroMusical' GO EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA OS DETALHES DOS ÁLBUNS REGISTRADOS NO SISTEMA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O NOME DO GÊNERO MUSICAL DO ÁLBUM.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe', @level2type = 'COLUMN', @level2name = 'Core.Parametro.ParametroValueGeneroMusical' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O ANO DE LANÇAMENTO DO ÁLBUM.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe', @level2type = 'COLUMN', @level2name = 'Musica.Album.AlbumAno' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O URL PARA A IMAGEM DE CAPA DO ÁLBUM.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe', @level2type = 'COLUMN', @level2name = 'Musica.Album.AlbumCapaURL' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O NOME DO ÁLBUM.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe', @level2type = 'COLUMN', @level2name = 'Musica.Album.AlbumNome' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O URL PARA A FOTO DO ARTISTA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe', @level2type = 'COLUMN', @level2name = 'Musica.Artista.ArtistaFotoURL' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O NOME DO ARTISTA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe', @level2type = 'COLUMN', @level2name = 'Musica.Artista.ArtistaNome' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O URL PARA PESQUISAR O ARTISTA NO SPOTIFY.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe', @level2type = 'COLUMN', @level2name = 'Musica.Artista.ArtistaSpotifyURL' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA A DURAÇÃO DA MÚSICA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe', @level2type = 'COLUMN', @level2name = 'Musica.Musica.MusicaDuracao' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O NOME DA MÚSICA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe', @level2type = 'COLUMN', @level2name = 'Musica.Musica.MusicaNome' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA A ORDEM DA MÚSICA NO ÁLBUM.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalhe', @level2type = 'COLUMN', @level2name = 'Musica.Musica.MusicaOrdem' GO CREATE OR ALTER VIEW UserView.AlbumDetalheGeneroLinha WITH ENCRYPTION, SCHEMABINDING AS SELECT A.ArtistaNome [Musica.Artista.ArtistaNome], A.ArtistaFotoURL [Musica.Artista.ArtistaFotoURL], A.ArtistaSpotifyURL [Musica.Artista.ArtistaSpotifyURL], C.AlbumNome [Musica.Album.AlbumNome], C.AlbumAno [Musica.Album.AlbumAno], C.AlbumCapaURL [Musica.Album.AlbumCapaURL], M.MusicaNome [Musica.Musica.MusicaNome], M.MusicaOrdem [Musica.Musica.MusicaOrdem], M.MusicaDuracao [Musica.Musica.MusicaDuracao], SUBSTRING(GeneroMusicalNome, 1, LEN(GeneroMusicalNome)-1) [GeneroMusicalNome] FROM Musica.Artista A JOIN Musica.ArtistaAlbum AA ON AA.ArtistaId = A.ArtistaId JOIN Musica.Album C ON C.AlbumId = AA.AlbumId JOIN Musica.Musica M ON M.AlbumId = C.AlbumId CROSS APPLY ( SELECT P.ParametroValue + ', ' FROM Musica.GeneroMusicalAlbum GA JOIN Core.Parametro P ON P.ParametroId = GA.ParametroIdGeneroMusical AND p.ParametroKey = 'GeneroMusical' WHERE GA.AlbumId = C.AlbumId FOR XML PATH('') ) Resultados(GeneroMusicalNome) GO EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA OS DETALHES DOS ÁLBUNS REGISTRADOS NO SISTEMA. QUANDO HOUVER MAIS DE UM GÊNERO PARA O MESMO ÁLBUM, TODOS OS VALORES SERÃO APRESENTADOS NA MESMA LINHA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA OS GÊNEROS MUSICAIS DO ÁLBUM SEPARADOS POR VÍRGULA QUANDO HOUVER MAIS DE UM. CAMPO CALCULADO. ', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha', @level2type = 'COLUMN', @level2name = 'GeneroMusicalNome' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O ANO DE LANÇAMENTO DO ÁLBUM.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha', @level2type = 'COLUMN', @level2name = 'Musica.Album.AlbumAno' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O URL PARA A IMAGEM DE CAPA DO ÁLBUM.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha', @level2type = 'COLUMN', @level2name = 'Musica.Album.AlbumCapaURL' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O NOME DO ÁLBUM.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha', @level2type = 'COLUMN', @level2name = 'Musica.Album.AlbumNome' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O URL PARA A FOTO DO ARTISTA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha', @level2type = 'COLUMN', @level2name = 'Musica.Artista.ArtistaFotoURL' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O NOME DO ARTISTA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha', @level2type = 'COLUMN', @level2name = 'Musica.Artista.ArtistaNome' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O URL PARA PESQUISAR O ARTISTA NO SPOTIFY.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha', @level2type = 'COLUMN', @level2name = 'Musica.Artista.ArtistaSpotifyURL' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA A DURAÇÃO DA MÚSICA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha', @level2type = 'COLUMN', @level2name = 'Musica.Musica.MusicaDuracao' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA O NOME DA MÚSICA.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha', @level2type = 'COLUMN', @level2name = 'Musica.Musica.MusicaNome' EXEC SP_ADDEXTENDEDPROPERTY @name = 'DEFINITION', @value = 'ARMAZENA A ORDEM DA MÚSICA NO ÁLBUM.', @level0type = 'SCHEMA', @level0name = 'UserView', @level1type ='VIEW', @level1name = 'AlbumDetalheGeneroLinha', @level2type = 'COLUMN', @level2name = 'Musica.Musica.MusicaOrdem' -- SCHEMA SELECT DISTINCT CONCAT('EXEC SP_ADDEXTENDEDPROPERTY @name = ''DEFINITION'', @value = ''PREENCHER!!!'', @level0type = ''SCHEMA'', @level0name = ',QUOTENAME(TABLE_SCHEMA,'''')) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA <> 'DBO' -- TABLE || VIEW SELECT CONCAT('EXEC SP_ADDEXTENDEDPROPERTY @name = ''DEFINITION'', @value = ''PREENCHER!!!'', @level0type = ''SCHEMA'', @level0name = ',QUOTENAME(TABLE_SCHEMA,''''),', @level1type =',QUOTENAME(CASE WHEN LEFT(TABLE_NAME,2) = 'UV' THEN 'VIEW' ELSE 'TABLE' END,''''),', @level1name = ',QUOTENAME(TABLE_NAME,'''')) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'UserView' --AND TABLE_NAME LIKE '%PARTE DO NOME DA TABELA%' -- COLUMNS SELECT CONCAT('EXEC SP_ADDEXTENDEDPROPERTY @name = ''DEFINITION'', @value = ''PREENCHER!!!'', @level0type = ''SCHEMA'', @level0name = ',QUOTENAME(TABLE_SCHEMA,''''),', @level1type =',QUOTENAME(CASE WHEN LEFT(TABLE_NAME,2) = 'UV' THEN 'VIEW' ELSE 'TABLE' END,''''),', @level1name = ',QUOTENAME(TABLE_NAME,''''),', @level2type = ''COLUMN'', @level2name = ',QUOTENAME(COLUMN_NAME,'''')) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'USERVIEW' --AND TABLE_NAME LIKE '%PARTE DO NOME DA TABELA%' -- STORED PROCEDURES SELECT CONCAT('EXEC SP_ADDEXTENDEDPROPERTY @name = ''DEFINITION'', @value = ''PREENCHER!!!'', @level0type = ''SCHEMA'', @level0name = ',QUOTENAME(S.NAME,''''),', @level1type =''STORED PROCEDURE'', @level1name = ',QUOTENAME(P.NAME,'''')) FROM SYS.PROCEDURES P JOIN SYS.SCHEMAS S ON P.SCHEMA_ID = S.SCHEMA_ID AND S.NAME <> 'DBO'